Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
bc(1)				 User Commands				 bc(1)

NAME
       bc - arbitrary precision	arithmetic language

SYNOPSIS
       bc [ -c ]  [ -l ]  [ file ... ]

DESCRIPTION
       The  bc	utility	implements an arbitrary	precision calculator. It takes
       input from any files given, then	reads from the standard	input. If  the
       standard	 input	and  standard output to	bc are attached	to a terminal,
       the invocation of bc is	interactive,  causing  behavioral  constraints
       described  in  the following sections. bc processes a language that re-
       sembles C and is	a preprocessor for the	desk  calculator  program  dc,
       which  it  invokes automatically	unless the -c option is	specified.  In
       this case the dc	input is sent to the standard output instead.

USAGE
       The syntax for  bc programs is as follows:

       L     means a letter a-z,

       E     means an  expression:  a  (mathematical  or  logical)  value,  an
	     operand  that takes a value, or a combination of operands and op-
	     erators that evaluates to a value,

       S     means a statement.

   Comments
	      Enclosed in /* and */.

   Names (Operands)
		 Simple	variables: L.

		 Array elements: L [ E ] (up to	BC_DIM_MAX dimensions).

		 The  words  ibase,  obase (limited to BC_BASE_MAX), and scale
		 (limited to BC_SCALE_MAX).

   Other Operands
       Arbitrarily long	numbers	with optional sign and decimal point.  Strings
       of  fewer than BC_STRING_MAX characters,	between	double quotes ("). ( E
       )

       sqrt ( E	)
	     Square root

       length (	E )
	     Number of significant decimal digits.

       scale ( E )
	     Number of digits right of decimal point.

       L ( E , ... , E )

   Operators
       +   -   *   /   %   ^
	     (%	is remainder; ^	is power)

       ++   --
	     (prefix and postfix; apply	to names)

       ==   <=	 >=   !=   <   >

       =   =+	=-   =*	  =/   =%   =^

   Statements
		 E

		 { S ;... ; S }

		 if ( E	) S

		 while ( E ) S

		 for ( E ; E ; E ) S

		 null statement

		 break

		 quit

       .string

   Function Definitions
		 define	L ( L ,..., L )	{

		      auto L ,..., L

		      S	;... S

		      return ( E )

		 }

   Functions in	-l Math	Library
       s(x)  sine

       c(x)  cosine

       e(x)  exponential

       l(x)  log

       a(x)  arctangent

       j(n,x)
	     Bessel function

       All function arguments are passed by value.

       The value of a statement	that is	an expression is  printed  unless  the
       main operator is	an assignment. Either semicolons or new-lines may sep-
       arate  statements.  Assignment to scale influences the number of	digits
       to be retained on arithmetic operations in the manner  of  dc.  Assign-
       ments  to  ibase	or obase set the input and output number radix respec-
       tively.

       The same	letter may be used as an array,	a function, and	a simple vari-
       able simultaneously. All	variables are  global  to  the	program.  auto
       variables  are  stacked	during	function  calls.  When using arrays as
       function	arguments or  defining	them  as  automatic  variables,	 empty
       square brackets must follow the array name.

OPTIONS
       The following operands are supported:

       -c    Compile  only.  The  output  is  dc commands that are sent	to the
	     standard output.

       -l    Define the	math functions and initialize  scale to	20, instead of
	     the default zero.

OPERANDS
       The following operands are supported:

       file  A pathname	of a text file containing bc program statements. After
	     all cases of file have been read, bc will read the	 standard  in-
	     put.

EXAMPLES
       Example 1: Setting the precision	of a variable

       In  the	shell, the following assigns an	approximation of the first ten
       digits of n to the variable x:

       x=$(printf "%s\n" 'scale	= 10; 104348/33215' | bc)

       Example 2: Defining a computing function

       Defines a function to compute an	approximate value of  the  exponential
       function:

       scale = 20
       define e(x){
	    auto a, b, c, i, s
	    a =	1
	    b =	1
	    s =	1
	    for(i=1; 1==1; i++){
		 a = a*x
		 b = b*i
		 c = a/b
		 if(c == 0) return(s)
		 s = s+c
	    }
       }

       Example 3: Printing the approximate values of the function

       Prints  approximate values of the exponential function of the first ten
       integers:

       for(i=1;	i<=10; i++) e(i)

       or

       for (i =	1; i <=	10; ++i) {	   e(i)	}

ENVIRONMENT VARIABLES
       See environ(5) for descriptions of the following	environment  variables
       that affect the execution of bc:	LC_CTYPE, LC_MESSAGES, and NLSPATH.

EXIT STATUS
       The following exit values are returned:

       0     All input files were processed successfully.

       unspecified
	     An	error occurred.

FILES
       /usr/lib/lib.b
	     mathematical library

       /usr/include/limits.h
	     to	define BC_ parameters

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       +------------------------------+-----------------------------+
       |       ATTRIBUTE TYPE	      |	     ATTRIBUTE VALUE	    |
       +------------------------------+-----------------------------+
       | Availability		      |SUNWesu			    |
       +------------------------------+-----------------------------+

SEE ALSO
       dc(1), awk(1), attributes(5)

NOTES
       The bc command does not recognize the logical operators && and ||.

       The for statement must have all three expressions (E's).

SunOS 5.8			  28 Mar 1995				 bc(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bc&sektion=1&manpath=SunOS+5.8>

home | help