dc - Provides an interactive desk calculator for arbitrary
precision integer arithmetic
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
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:
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, proceed
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 register 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
[ Return f(n) = 1 ]s. [d - 1 +] sb
[ Return f(n) = n * f(n-1) ]s. [d 1 - lf x
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.
[ Back ]