```

DC(I)                        1/15/73                        DC(I)

NAME

dc - desk calculator

SYNOPSIS

dc [ file ]

DESCRIPTION

Dc is an arbitrary  precision  integer  arithmetic  package.

The  overall  structure of dc is a stacking (reverse Polish)

calculator.  The following constructions are  recognized  by

the calculator:

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.

+ - * / % ^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.

sx         The top of the stack is popped and stored into  a

register named x, where x may be any character.

lx         The value in register x is pushed on  the  stack.

The  register  x  is  not  altered.  All registers

start with zero value.

d          The top value on  the  stack  is  pushed  on  the

stack.  Thus the top value is duplicated.

p          The top value on the stack is printed.   The  top

value remains unchanged.

f          All values on the  stack  and  in  registers  are

printed.

q          exits the program. If  executing  a  string,  the

nesting level is popped by two.

x          treats  the  top  element  of  the  stack  as   a

character string and executes it as a string of dc

commands.

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

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

o          The top value on the stack is popped and used  as

the number radix for further output.

z          The stack level is pushed onto the stack.

?          A line of input is taken from  the  input  source

(usually the console) and executed.

new-line   ignored except as the name of a  register  or  to

end the response to a ?.

space      ignored except as the name of a  register  or  to

terminate a number.

If a file name is given, input is taken from that file until

end-of-file,  then  input  is  taken  from  the console.  An

example which prints the first ten values of n! is

[la1+dsa*pla10>x]sx

0sa1

lxx

FILES

/etc/msh   to implement `!'

DIAGNOSTICS

(x) ? for unrecognized character x.

(x) ? for not enough elements on the stack to  do  what  was

asked by command x.

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

BUGS

```