unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (v7man)
Page:
Section:
Apropos / Subsearch:
optional field

DC(1)                       General Commands Manual                      DC(1)



NAME
       dc - desk calculator

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.

       [ ... ]
             puts the bracketed ascii string onto the top of the stack.

       <x  >x  =x
             The top two elements of the stack are popped and compared.   Reg-
             ister x is executed if they obey the stated relation.

       v     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.

       !     interprets the rest of the line as a UNIX command.

       c     All values on the stack are popped.

       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.



                                                                         DC(1)