Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dc(1) — AIX/RT 2.2.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bc

dc

PURPOSE

     Provides  an   interactive  desk  calculator   for  doing
     arbitrary-precision integer arithmetic.

SYNOPSIS
     dc [ file ]


DESCRIPTION

     The dc command is  an arbitrary precision arithmetic cal-
     culator.  dc takes its input  from file or standard input
     until it  reads an  end-of-file character.  It  writes to
     standard output.   It operates  on decimal  integers, but
     you may specify an input  base, output base, and a number
     of fractional digits to  be maintained.  dc is structured
     overall as a stacking, reverse Polish, calculator.

     The bc command  (see page 112) is a  preprocessor for dc.
     It provides infix notation and  a syntax similar to the C
     language  which   implements  functions   and  reasonable
     control structures for programs.

SUBCOMMANDS

     number         Pushes the specified value onto the stack.
                    A  number is  an  unbroken  string of  the
                    digits 0-9.  To specify a negative number,
                    precede it with  _ (underscore).  A number
                    may contain a decimal point.
     + - / * % ^    Adds (+), subtracts (-), multiplies ("*"),
                    divides   (/),    remainders   ("%"),   or
                    exponentiates  (^) the  top two  values on
                    the stack.   dc pops  the top  two entries
                    off the stack and pushes the result on the
                    stack  in their  place.  dc  ignores frac-
                    tional parts of an exponent.
     sx             Pops the top of the stack and stores it in
                    a  register named  x, where  x may  be any
                    character.
     Sx             Treats x as  a stack.  It pops  the top of
                    the main stack and  pushes that value onto
                    stack x.
     lx             Pushes  the value  in  register  x on  the
                    stack.   The register  x  is not  changed.
                    All registers start with zero value.
     Lx             Treats x as a stack and pops its top value
                    onto the main stack.
     d              Duplicates the top value on the stack.
     p              Displays the top value  on the stack.  The
                    top value remains unchanged.  The p inter-
                    prets  the top  of the  stack as  an ASCII
                    string, removes it, and displays it.

     P              Interprets  the  top  of the  stack  as  a
                    string, removes it, and displays it.
     f              Displays all values on the stack.
     q              Exits the  program.  If dc is  executing a
                    string,  it pops  the  recursion level  by
                    two.
     Q              Pops the  top  value on the  stack and the
                    string execution level 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.
     [string]       Puts the bracketed string  onto the top of
                    the stack.

     <x
     >x
     =x             Pops the top two elements of the stack and
                    compares them.  Evaluates register x as if
                    it obeys 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 AIX
                    command.
     c              Cleans the  stack: dc  pops all  values on
                    the stack.
     i              Pops the  top value on the  stack and uses
                    that value as the number radix for further
                    input.
     I              Pushes the  input base  on the top  of the
                    stack.
     o              Pops the  top value on the  stack and uses
                    that value as the number radix for further
                    output.
     O              Pushes the  output base on the  top of the
                    stack.
     k              Pops the  top of the stack,  and uses that
                    value as a  nonnegative scale factor.  The
                    appropriate number  of places  displays on
                    output and is  maintained during multipli-
                    cation, division, and exponentiation.  The
                    interaction of  scale factor,  input base,
                    and output  base is reasonable if  all are
                    changed together.
     z              Pushes the number of elements in the stack
                    onto the stack.
     Z              Replaces the top number  in the stack with
                    the number of digits in that number.
     ?              Gets and runs a line of input.
     ;:             bc uses  these characters for  array oper-
                    ations.

EXAMPLES

     1.  To use dc as a calculator:

            You:
              1 4 / p
         System:
              0
            You:
              1 k       [ Keep 1 decimal place  ]s.
              1 4 / p
         System:
              0.2
            You:
              3 k       [ Keep 3 decimal places ]s.
              1 4 / p
         System:
              0.250
            You:
              16 63 5 / + p
         System:
              28.600
            You:
              16 63 5 + / p
         System:
              0.235

         You may  type the  comments (enclosed  in "[ ]"s"."),
         but they are provided only for your information.

         When you enter dc  expressions directly from the key-
         board, press Ctrl-D to end  the bc session and return
         to the shell command line.
     2.  To load and run a dc program file:

            You:
              dc prog.dc
              5 lf x p   [  5 factorial ]s.
         System:
              120
            You:
              10 lf x p  [ 10 factorial ]s.
         System:
              3628800

         This interprets  the dc  program saved  in "prog.dc",
         then reads from the work station keyboard.

         The "lf x" evaluates the  function stored in register
         "f",  which  could be  defined  in  the program  file
         "prog.c" as:

           [ f: compute the factorial of n ]s.
           [    (n = the top of the stack) ]s.

           [ If 1>n do b;  If 1<n do r ]s.
              [d 1 >b d 1 <r] sf

           [ Return f(n) = 1           ]s.
              [d - 1 +] sb

           [ Return f(n) = n * f(n-1)  ]s.
              [d 1 - lf x *] sr

         You can create  dc program files with  a text editor,
         or  with the  -c (compile)  flag of  the bc  command.
         When you enter dc  expressions directly from the key-
         board, press Ctrl-D to end  the bc session and return
         to the shell command line.

RELATED INFORMATION

     The following command:  "bc."

     "Overview of International Character Support" in Managing
     the AIX Operating System.

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