HP-UX Reference (11i v1 05/09) - 1 User Commands A-M (vol 1)

b
bc(1) bc(1)
Statements
E
{ S ; ... ; S }
if(R)S
while ( R ) S
for(E;R;E)S
null statement
break
quit
Function Definitions:
define L ( L ,..., L ) {
auto L, ... , L
S; ... S
return ( E )
}
Functions in l Math Library:
Functions in the -l math library include:
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. Trigonometric angles are in radians where 2 pi radians = 360
degrees.
The value of a statement that is an expression is printed unless the main operator is an assignment. No
operators are defined for strings, but the string is printed if it appears in a context where an expression
result would be printed. Either semicolons or new-lines can separate statements. Assignment to scale
influences the number of digits to be retained on arithmetic operations in the manner of dc(1). Assign-
ments to
ibase or obase set the input and output number radix respectively, again as defined by dc(1).
The same letter can be used simultaneously as an array, a function, and a simple variable. 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.
The
% operator yields the remainder at the current scale, not the integer modulus. Thus, at scale 1,
7%
3
is .1 (one tenth), not 1. This is because (at scale 1) 7/3
is 2.3 with .1 as the remainder.
EXAMPLES
Define 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
}
}
Print approximate values of the exponential function of the first ten integers.
for(i=1; i<=10; i++) e(i)
Section 142 Hewlett-Packard Company 2 HP-UX 11i Version 1: September 2005