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
       /usr/bin/bc [-c]	[-l] [file...]

       /usr/xpg6/bin/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 op-
		erand	that  takes  a value, or a combination of operands and
		operators 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 func-
       tion  arguments	or  defining them as automatic variables, empty	square
       brackets	must follow the	array name.

OPTIONS
       The following operands are supported:

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

   /usr/bin/bc
       -l	       Defines the math	functions and initializes scale	to 20,
		       instead of the default zero.

   /usr/xpg6/bin/bc
       -l	       Defines the math	functions and initializes scale	to 20,
		       instead	of the default zero. All math results have the
		       scale of	20.

OPERANDS
       The following operands are supported:

       file	       A pathname of a text file containing bc program	state-
		       ments. After all	cases of file have been	read, bc reads
		       the standard input.

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:	LANG, LC_ALL,  LC_CTYPE,  LC_MESSAGES,
       and NLSPATH.

EXIT STATUS
       The following exit values are returned:

       0			       All input files were processed success-
				       fully.

       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			   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |Standard			   |
       +-----------------------------+-----------------------------+

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

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

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

SunOS 5.10			  29 Aug 2003				 bc(1)

NAME | SYNOPSIS | DESCRIPTION | USAGE | OPTIONS | OPERANDS | EXAMPLES | ENVIRONMENT VARIABLES | EXIT STATUS | FILES | ATTRIBUTES | SEE ALSO | NOTES

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

home | help