Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ () — Motorola System V 88k Release 3.2 Version 1.2C

Media Vault

Software Library

Restoration Projects

Artifacts Sought



  DC(1)              (User Environment Utilities)             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.  (See bc(1), a preprocessor for dc that
       provides infix notation and a C-like syntax that implements
       functions; bc also provides reasonable control structures
       for programs.) 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


  Page 1                                                   May 1989


















  DC(1)              (User Environment Utilities)             DC(1)



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



  Page 2                                                   May 1989


















  DC(1)              (User Environment Utilities)             DC(1)



       !     Interprets the rest of the line as a command to the
             shell.

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

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

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

  SEE ALSO


  Page 3                                                   May 1989


















  DC(1)              (User Environment Utilities)             DC(1)



       bc(1).

  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.





















  Page 4                                                   May 1989
















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