4.3BSD-Reno/share/man/cat1/bc.0
BC(1) UNIX Reference Manual BC(1)
NNAAMMEE
bbcc - arbitrary-precision arithmetic language and calculator
SSYYNNOOPPSSIISS
bbcc [--cc] [--ll] [_f_i_l_e ...]
DDEESSCCRRIIPPTTIIOONN
BBcc is an interactive processor for a language which resembles C but pro-
vides unlimited precision arithmetic. It takes input from any files
given, then reads the standard input. The
--ll allow specification of an arbitrary precision math library.
--cc BBcc is actually a preprocessor for _d_c _1, which it invokes au-
tomatically, unless the --cc compile only. option is present.
In this case the _d_c input is sent to the standard output in-
stead.
The syntax for bbcc programs is as follows; L means letter a-z, E means ex-
pression, S means statement.
Comments
are enclosed in /* and */.
Names
simple variables: L
array elements: L [ E ]
The words `ibase', `obase', and `scale'
Other operands
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 --ll 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 _s_c_a_l_e influences the number of digits to be
retained on arithmetic operations in the manner of dc(1). Assignments to
_i_b_a_s_e or _o_b_a_s_e set the input and output number radix respectively.
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 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.
For example
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
}
}
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.
FFIILLEESS
_d_c(_1) _d_e_s_k _c_a_l_c_u_l_a_t_o_r _p_r_o_p_e_r
SSEEEE AALLSSOO
dc(1)
L. L. Cherry and R. Morris, _B_C - _A_n _a_r_b_i_t_r_a_r_y _p_r_e_c_i_s_i_o_n _d_e_s_k-_c_a_l_c_u_l_a_t_o_r
_l_a_n_g_u_a_g_e
HHIISSTTOORRYY
The bbcc command appeared in Version 7 AT&T UNIX.
BBUUGGSS
No &&, |\(or, or ! operators.
`For' statement must have all three E's.
`Quit' is interpreted when read, not when executed.