Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dc(1) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bc(1)






       dc(1)                                                          dc(1)


       NAME
             dc - desk calculator

       SYNOPSIS
             dc [file]

       DESCRIPTION
             dc is an arbitrary precision arithmetic package.  Ordinarily
             it operates on decimal integers, but one may specify an input
             base, output base, and a number of fractional digits to be
             maintained.  [bc is a preprocessor for dc that provides infix
             notation and a C-like syntax that implements functions.  bc
             also provides reasonable control structures for programs.  See
             bc(1).]  The overall structure of dc is a stacking (reverse
             Polish) calculator.  If an argument 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.




                           Copyright 1994 Novell, Inc.               Page 1













      dc(1)                                                          dc(1)


             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 are printed.

             q    Exits the program.  If executing a string, the recursion
                  level is popped by two.

             Q    Exits the program.  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 factor.

             [ . . . ]
                  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.  Register x is evaluated 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 system
                  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.





                          Copyright 1994 Novell, Inc.               Page 2













       dc(1)                                                          dc(1)


              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, division, 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 terminal) and executed.

             ; :   are used by bc(1) for array operations.

       EXAMPLES
             This example prints the first ten values of n!:

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

       REFERENCES
             bc(1)

       DIAGNOSTICS
             x is unimplemented: x is an octal number.

             stack empty: not enough elements on the stack to do what was
             asked.

             Out of space: the free list is exhausted (too many digits).

             Out of headers: too many numbers being kept around.

             Out of pushdown: too many items on the stack.





                           Copyright 1994 Novell, Inc.               Page 3













      dc(1)                                                          dc(1)


            Nesting Depth: too many levels of nested execution.















































                          Copyright 1994 Novell, Inc.               Page 4








Typewritten Software • bear@typewritten.org • Edmonds, WA 98026