Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bc(1)



dc(1)                    USER COMMANDS                      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 pro-
     vides 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  nega-
           tive number.  Numbers may contain decimal points.

     + - / * % ^
           The top two values on the stack are  added  (+),  sub-
           tracted  (-), 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.




                                                                1





dc(1)                    USER COMMANDS                      dc(1)



      f    All values on the stack are printed.

      q    Exits the program.  If executing a string, the  recur-
           sion 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  com-
           pared.   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  com-
           mand.

      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  out-
           put  base  will  be  reasonable  if  all  are  changed
           together.

      z    The stack level is pushed onto the stack.



                                                                2





dc(1)                    USER COMMANDS                      dc(1)



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

      ?    A line of input is taken from the input  source  (usu-
           ally 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
     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.

     Nesting Depth:  too many levels of nested execution.
























                                                                3



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