bc
[options
] [files
]
Interactively perform arbitrary-precision arithmetic or convert numbers
from one base to another. Input can be taken from
files
or read from the standard input. To exit, type
quit or EOF
.
Do not invoke dc; compile only. (Since bc is a preprocessor for dc, bc normally invokes dc.)
Make available functions from the math library.
bc is a language (and compiler) whose syntax resembles that of C. bc consists of identifiers, keywords, and symbols, which are briefly described below. Examples follow at end.
An identifier is a single character, consisting of the lowercase letters a-z. Identifiers are used as names for variables, arrays, and functions. Within the same program you may name a variable, an array, and a function using the same letter. The following identifiers would not conflict:
Variable x.
i
]Element i
of array x. i
can range from 0 to 2047
and can also be an expression.
Call function x with parameters y and z.
ibase, obase, and scale store a value. Typing them on a line by themselves displays their current value. More commonly, you would change their values through assignment. Letters A-F are treated as digits whose values are 10-15.
n
Numbers that are input (e.g., typed) are read as base n
(default is 10).
n
Numbers displayed are in base n
(default is 10).
Note: Once ibase has been changed from 10, use digit "A"
to restore ibase or obase to decimal.
n
Display computations using n
decimal places (default is 0,
meaning that results are truncated to integers).
scale is normally used only for base-10 computations.
A semicolon or a newline separates one statement from another. Curly braces are needed only when grouping multiple statements.
rel-expr
) {statements
}Do one or more statements
if relational expression
rel-expr
is true; for example:
if(x==y) i = i + 1
.
rel-expr
) {statements
}Repeat one or more statements
while rel-expr
is true; for
example:
while(i>0) {p = p*n; q = a/b; i = i-1}
expr1
;rel-expr
;expr2
) {statements
}Similar to while; for example, to print the first 10 multiples of 5, you could type:
for(i=1; i<=10; i++) i*5
Terminate a while or for statement.
j
(k
) {Begin the definition of function j
having a single argument k
.
Additional arguments are allowed, separated by commas.
Statements follow on successive lines. End with a }.
x
, y
Set up x
and y
as variables local to a function definition,
initialized to 0 and meaningless outside the function. Must appear first.
expr
)Pass the value of expression expr
back to the program.
Return 0 if (expr
) is left off. Used in function definitions.
expr
)Compute the square root of expression expr
.
expr
)Compute how many digits are in expr
.
expr
)Same, but count only digits to the right of the decimal point.
These are available when bc is invoked with -l. Library functions set scale to 20.
angle
)Compute the sine of angle
, a constant or expression
in radians.
angle
)Compute the cosine of angle
, a constant or expression
in radians.
n
)Compute the arctangent of n
, returning an angle in radians.
expr
)Compute e to the power of expr
.
expr
)Compute natural log of expr
.
n
, x
)Compute Bessel function of integer order n
.
These consist of operators and other symbols. Operators can be arithmetic, unary, assignment, or relational.
+ -
*
/ % ^
-
++ --
=+ =-
=* =/ =% =^ =
< <= > >= == !=
Enclose comments.
Control the evaluation of expressions (change precedence). Can also be used around assignment statements to force the result to print.
Used to group statements.
Array index.
text
"Use as a statement to print text
.
Note below that when you type some quantity (a number or expression), it is evaluated and printed, but assignment statements produce no display.
ibase = 8
Octal input.20
Evaluate this octal number.16
Terminal displays decimal value.obase = 2
Display output in base 2 instead of base 10.20
Octal input.10000
Terminal now displays binary value.ibase = A
Restore base 10 input.scale = 3
Truncate results to 3 places.8/7
Evaluate a division.1.001001000
Oops! Forgot to reset output base to 10.obase=10
Input is decimal now, so "A" isn't needed.8/7
1.142
Terminal displays result (truncated).
The following lines show the use of functions:
define p(r,n){
Function p uses two arguments.auto v
v is a local variable.v = r^n
r raised to the n power.return(v)}
Value returned.scale=5
x=p(2.5,2)
x = 2.5 ^ 2x
Print value of x. 6.25length(x)
Number of digits. 3scale(x)
Number of places right of decimal point. 2