Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dc(1) — GENIX 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bc(1)

DC(1)



      DC(1)                   GENIX Programmer's Manual                   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.
           The  overall structure of dc is a stacking (reverse Polish) calcula-
           tor.  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  con-
                 tain 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 capital-
                 ized, 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.



      Printed 11/16/83                                                        1





      DC(1)                   GENIX Programmer's Manual                   DC(1)



           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 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,
                 division,  and  exponentiation.  The interaction of scale fac-
                 tor, 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 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



      Printed 11/16/83                                                        2





      DC(1)                   GENIX Programmer's Manual                   DC(1)



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













































      Printed 11/16/83                                                        3



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