SYNOPSIS

       dc [file]


DESCRIPTION

       Dc  is  an arbitrary precision arithmetic package.  Ordinarily it oper-
       ates on decimal integers, but one may specify  an  input  base,  output
       base,  and a number of fractional digits to be maintained.  The overall
       structure of dc is a stacking (reverse Polish) calculator.  If an argu-
       ment  is  given, input is taken from that file until its end, then from
       the standard input.  The following constructions are recognized:

       number
             The value of the number is pushed on the stack.  A number  is  an
             unbroken  string  of  the  digits  0-9.  It may be preceded by an
             underscore _ to input a negative  number.   Numbers  may  contain
             decimal points.

       +  - /  *  %  ^
             The  top  two  values on the stack are added (+), subtracted (-),
             multiplied (*), divided (/), remaindered  (%),  or  exponentiated
             (^).   The  two  entries  are popped off the stack; the result is
             pushed on the stack in their place.  Any fractional  part  of  an
             exponent is ignored.

       sx    The  top  of the stack is popped and stored into a register named
             x, where x may be any character.  If the s is capitalized,  x  is
             treated as a stack and the value is pushed on it.

       lx    The  value  in register x is pushed on the stack.  The register x
             is not altered.  All registers start with zero value.  If  the  l
             is  capitalized,  register  x  is  treated as a stack and its top
             value is popped onto the main stack.

       d     The top value on the stack is duplicated.

       p     The top value on the stack is printed.   The  top  value  remains
             unchanged.  P interprets the top of the stack as an ascii string,
             removes it, and prints it.

       f     All values on the stack and in registers are printed.

       q     exits the program.  If executing a string, the recursion level is
             popped  by  two.  If q is capitalized, the top value on the stack
             is popped and the string execution level is popped by that value.

       x     treats  the  top  element  of the stack as a character string and
             executes it as a string of dc commands.

       X     replaces the number on the top of the stack with its  scale  fac-
             tor.

       [ ... ]
       i     The top value on the stack is popped and used as the number radix
             for  further  input.   I  pushes the input base on the top of the
             stack.

       o     The top value on the stack is popped and used as the number radix
             for further output.

       O     pushes the output base on the top of the stack.

       k     the  top of the stack is popped, and that value is used as a non-
             negative scale factor:  the  appropriate  number  of  places  are
             printed  on  output,  and maintained during multiplication, divi-
             sion, and exponentiation.  The interaction of scale factor, input
             base,  and  output  base  will  be  reasonable if all are changed
             together.

       z     The stack level is pushed onto the stack.

       Z     replaces the number on the top of the stack with its length.

       ?     A line of input is taken from the input source (usually the  ter-
             minal) and executed.

       ; :   are used by bc for array operations.

       An example which prints the first ten values of n! is

          [la1+dsa*pla10>y]sy
          0sa1
          lyx


SEE ALSO

       bc(1), which is a preprocessor for dc providing infix notation and a C-
       like syntax which implements functions and  reasonable  control  struc-
       tures for programs.


DIAGNOSTICS

       `x is unimplemented' where x is an octal number.
       `stack  empty'  for  not  enough  elements  on the stack to do what was
       asked.
       `Out of space' when the free list is exhausted (too many digits).
       `Out of headers' for too many numbers being kept around.
       `Out of pushdown' for too many items on the stack.
       `Nesting Depth' for too many levels of nested execution.



Heirloom Toolchest                  1/11/03                              DC(1)

Man(1) output converted with man2html