dc(1)dc(1)NAMEdc - Provides an interactive desk calculator for arbitrary precision
integer arithmetic
SYNOPSISdcDESCRIPTION
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 calcula‐
tor.
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.
SUBCOMMANDS
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 exponen‐
tiates (^) 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 multiplica‐
tion, 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 execu‐
tion 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 frac‐
tional 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 exe‐
cuted if the stated relationship is TRUE. dc uses these characters for
array operations.
EXAMPLES
To use dc as a calculator proceed as follows:
Enter: 1 4 / p [Divide 1 by 4]s.
The system responds as follows: 0
Enter: 1 k [ Keep 1 decimal place]s. 1 4 / p
The system responds as follows: 0.2
Enter: 3 k [ Keep 3 decimal places]s. 1 4 / p
The system responds as follows: 0.250
Enter: 16 63 5 / + p [Divide 63 by 5, add the result to 16]s.
The system responds as follows: 28.600
Enter: 16 63 5 + / p [Add 63 and 5, divide the result by 16]s.
The system responds as follows: 0.235
You can type the comments (enclosed in brackets), but they are
provided only for your information.
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. To load and run a dc program file, pro‐
ceed as follows:
Enter: dc prog.dc 5 lf x p [ 5 factorial ]s.
The system responds as follows: 120
Enter: 10 lf x p [ 10 factorial ]s.
The system responds as follows: 3628800
This interprets the dc program saved in prog.dc, then reads from
standard input. The lf x evaluates the function stored in regis‐
ter f, which could be defined in the program file prog.dc as:
[ f: compute the factorial of n ]s.
[ (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.
SEE ALSO
Commands: bc(1)dc(1)