dc - Provides an interactive desk calculator for arbitrary precision integer arithmetic
dc
The dc command is an arbitrary precision arithmetic calculator. The dc command takes its input from file or standard input until it reads an End-of-File character. It writes to standard output. The dc command operates on integers by default, but you can specify an input base, output base, and a number of fractional digits to be maintained. The dc command is structured overall as a stacking, reverse Polish calculator.
The
bc
command is a preprocessor for
dc. It provides infix notation and a syntax similar to the C language,
which implements functions and reasonable control structures for programs.
Pushes the specified value onto the stack.
number
is an unbroken string of the digits 0 to 9. To specify
a negative number, precede it with _ (underscore). A number can contain a
decimal point.
Adds (+), subtracts (-), multiplies (*), divides (/), remainders
(%), or exponentiates (^) the top two values on the stack. The
dc
command pops the top two entries off the stack and pushes the
result on the stack in their place.
Interprets the rest of the line as a system command.
Executes a line of input from standard input.
Cleans the stack:
dc
pops all values on
the stack.
Duplicates the top value on the stack.
Displays all values on the stack.
Pops the top value on the stack and uses that value as the
number radix for further input.
Pushes the input base on the top of the stack.
Pops the top of the stack, and uses that value as a nonnegative
scale factor. The appropriate number of places is displayed on output and
is maintained during multiplication, division, and exponentiation. The interaction
of scale factor, input base, and output base is reasonable if all are changed
together.
Pushes the value in register
x
on the stack. The register
x
is not changed.
All registers start with zero value.
Treats
x
as a stack and pops its
top value onto the main stack.
Pops the top value on the stack and uses that value as the
number radix for further output.
Pushes the output base on the top of the stack.
Prints the top value on the stack. The top value remains
unchanged.
Interprets the top value on the stack as an ASCII string,
prints it, and removes it.
Exits the program. If
dc
is executing
a string, it pops the recursion level by two.
Pops the top value on the stack and the string execution
level by that value.
Pops the top of the stack and stores it in a register named
x, where
x
can be any single-byte
character.
Replaces the top element on the stack by its square root.
Any existing fractional part of the argument is taken into account, but otherwise
the scale factor is ignored.
Treats
x
as a stack. It pops the
top of the main stack and pushes that value onto stack
x.
Treats the top element of the stack as a character string
and executes it as a string of
dc
commands.
Replaces the number on the top of the stack with its scale
factor.
Pushes the number of elements in the stack onto the stack.
Replaces the top number in the stack with the number of digits
in that number.
Puts the bracketed
string
onto
the top of the stack.
Pops the top two elements of the stack and compares them.
Register
x
is executed if the stated relationship
is TRUE.
dc
uses these characters for array operations.
To use dc as a calculator proceed as follows:
[ (n = the top of the stack) ]s.
[ If 1>n do b; If 1<n do r ]s.
[d 1 >b d 1 <r] sf
[ Return f(n) = 1 ]s.
[d - 1 +] sb
[ Return f(n) = n * f(n-1) ]s.
[d 1 - lf x *] sr
You can create
dc
program files with a text editor,
or with the
-c
(compile) flag of the
bc
command. When you enter
dc
expressions directly from the
keyboard, press the End-of-File key sequence to end the
dc
session and return to the shell command line.
Commands: bc(1)