Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dc(1) — AIX PS/2 1.2.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bc



DC(1,C)                     AIX Commands Reference                      DC(1,C)



-------------------------------------------------------------------------------
dc



PURPOSE

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

SYNTAX


      +--------+
dc ---|        |---|
      +- file -+


DESCRIPTION

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

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

PARAMETERS

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.  The dc command pops the top two entries off the
                stack and pushes the result on the stack in their place.  The
                command ignores fractional 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.






Processed November 8, 1990          DC(1,C)                                   1





DC(1,C)                     AIX Commands Reference                      DC(1,C)



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 interprets 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 the dc command 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 an AIX command.

c                     Cleans the stack: by popping 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.





Processed November 8, 1990          DC(1,C)                                   2





DC(1,C)                     AIX Commands Reference                      DC(1,C)



O                     Pushes the output base on the top of the stack.

k                     Pops the top of the stack, and uses that value as a
                      non-negative scale factor.  The appropriate number of
                      places displays on output and is maintained during
                      multiplication, division, and exponentiation.  The
                      interaction of scale factor, input base, and output base
                      is reasonable if all are changed together.

K                     Pushes the non-negative scale pointer on the top of the
                      stack.

Y                     Displays addresses of all variables pushed onto the
                      stack.

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.

;:                    The dc command uses these characters for array
                      operations.

EXAMPLES

  1. To use dc as a calculator:

    Enter:

         1 4 / p

    The system responds:

         0

    Enter:

         1 k       [ Keep 1 decimal place  ]s.
         1 4 / p

    The system responds:

         0.2

    Enter:

         3 k       [ Keep 3 decimal places ]s.
         1 4 / p




Processed November 8, 1990          DC(1,C)                                   3





DC(1,C)                     AIX Commands Reference                      DC(1,C)



    The system responds:

         0.250

    Enter:

         16 63 5 / + p

    The system responds:

         28.600

    Enter:

         16 63 5 + / p

    The system responds:

         0.235

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

    When you enter dc expressions directly from the keyboard, press Ctrl-D to
    end the bc session and return to the shell command line.

  2. To load and run a dc program file:

    Enter:

         dc prog.dc
         5 lf x p   [  5 factorial ]s.

    The system responds:

         120

    Enter:

         10 lf x p  [ 10 factorial ]s.

    The system responds:

         3628800

    These commands interpret the dc program saved in the file "prog.dc", then
    read from the work station keyboard.  The "lf x" evaluates the function
    stored in register "f", which could be defined in the program file
    "prog.dc" as:






Processed November 8, 1990          DC(1,C)                                   4





DC(1,C)                     AIX Commands Reference                      DC(1,C)



      [ 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
    keyboard, press Ctrl-D to end the bc session and return to the shell
    command line.

RELATED INFORMATION

See the following command:  "bc."

See "Introduction to International Character Support" in Managing the AIX
Operating System.
































Processed November 8, 1990          DC(1,C)                                   5



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