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.
nNumbers that are input (e.g., typed) are read as base n (default is 10).
nNumbers 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.
nDisplay 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, ySet 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 = 8Octal input.20Evaluate this octal number.16Terminal displays decimal value.obase = 2Display output in base 2 instead of base 10.20Octal input.10000Terminal now displays binary value.ibase = ARestore base 10 input.scale = 3Truncate results to 3 places.8/7Evaluate a division.1.001001000Oops! Forgot to reset output base to 10.obase=10Input is decimal now, so "A" isn't needed.8/71.142Terminal displays result (truncated).
The following lines show the use of functions:
define p(r,n){Function p uses two arguments.auto vv is a local variable.v = r^nr raised to the n power.return(v)}Value returned.scale=5x=p(2.5,2)x = 2.5 ^ 2xPrint value of x. 6.25length(x)Number of digits. 3scale(x)Number of places right of decimal point. 2