bc(1)
bc 
arbitraryprecision arithmetic language
Synopsis
bc [c] [l] [file . . .]
Description
bc
is an interactive processor for a language that resembles
C but provides unlimited precision arithmetic.
It takes input from any files given, then reads
the standard input.
bc
is actually a preprocessor for the desk calculator program
dc,
which it invokes automatically unless the
c
option is present.
In this case the
dc
input is sent to the standard output instead.
The options are as follows:
c
Compile only.
The output is sent to the standard output.
l
Argument stands for the name
of an arbitrary precision math library.
The syntax for
bc
programs is as follows:
L
means letter
az,
E
means expression,
S
means statement.
Comments
enclosed in / and /
Names
simple variables:
L
array elements:
L [E]
keywords:
the words ibase, obase, and scale

arbitrarily long numbers with optional sign and decimal point
( E )

sqrt ( E )

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
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 newlines may separate statements.
Assignment to
scale
influences the number of digits to be retained on arithmetic
operations in the manner of
dc.
Assignments to
ibase
or
obase
set the input and output number radix respectively.
The same letter may be used as an array, a function,
and a simple variable simultaneously.
All variables are global to the program.
auto
variables are pushed down during function calls.
When using arrays as function arguments
or defining them as automatic variables,
empty square brackets must follow the array name.
Examples
scale = 20
define e(x){
auto a, b, c, i, s
a = 1
b = 1
s = 1
for(i=1; 1==1; i++){
a = ax
b = bi
c = a/b
if(c == 0) return(s)
s = s+c
}
}
defines a function to compute an approximate value of
the exponential function and
for(i=1; i<=10; i++) e(i)
prints approximate values of the exponential function of
the first ten integers.
Files
/usr/lib/lib.b
mathematical library
/usr/bin/dc
desk calculator proper
References
dc(1)
Notices
The bc command does not recognize the logical operators
``&&'' and ``''.
The
for
statement must have all three expressions
(E's).
The
quit
statement is interpreted when read, not when executed.
For certain operations, the value of scale might be
calculated to be larger than the current specified scale value.
When you set scale to a large value, take this into account
when performing operations that could
overflow the specified scale value.
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4  25 April 2004