unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



dc(1)									dc(1)



NAME

  dc - Provides	an interactive desk calculator for arbitrary precision
  integer arithmetic

SYNOPSIS

  dc

DESCRIPTION

  The dc command is an arbitrary precision arithmetic calculator.  The dc
  command takes	its input from file or standard	input until it reads an	End-
  of-File character.  It writes	to standard output. The	dc command operates
  on integers by default, but you can specify an input base, output base, and
  a number of fractional digits	to be maintained.  The dc command is struc-
  tured	overall	as a stacking, reverse Polish calculator.

  The bc command 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.  number is an unbroken
      string of	the digits 0 to	9.  To specify a negative number, precede it
      with _ (underscore).  A number can 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.

  !   Interprets the rest of the line as a system command.

  ?   Executes a line of input from standard input.

  c   Cleans the stack:	dc pops	all values on the stack.

  d   Duplicates the top value on the stack.

  f   Displays 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.

  k   Pops the top of the stack, and uses that value as	a nonnegative scale
      factor.  The appropriate number of places	is displayed 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.

  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.

  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.

  p   Prints the top value on the stack.  The top value	remains	unchanged.

  P   Interprets the top value on the stack as an ASCII	string,	prints it,
      and removes it.

  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.

  sx  Pops the top of the stack	and stores it in a register named x, where x
      can be any single-byte character.

  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.

  Sx  Treats x as a stack.  It pops the	top of the main	stack and pushes that
      value onto stack x.

  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.

  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.

  [string]
      Puts the bracketed string	onto the top of	the stack.

  <&lt;x

  >&gt;x

  =x  Pops the top two elements	of the stack and compares them.	 Register x
      is executed if the stated	relationship is	TRUE.

  ;:  dc uses these characters for array operations.

EXAMPLES

   1.  To use dc as a calculator proceed as follows:

       Enter:
	    1 4	/ p	    [Divide 1 by 4]s.

       The system responds as follows:
	    0

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

       The system responds as follows:
	    0.2

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

       The system responds as follows:
	    0.250

       Enter:
	    16 63 5 / +	p   [Divide 63 by 5, add the result to 16]s.

       The system responds as follows:
	    28.600

       Enter:
	    16 63 5 + /	p   [Add 63 and	5, divide the result by	16]s.

       The system responds as follows:
	    0.235

       You can type the	comments (enclosed in brackets), but they are pro-
       vided only for your information.

       When you	enter dc expressions directly from the keyboard, press the
       End-of-File key sequence	to end the dc session and return to the	shell
       command line.

   2.  To load and run a dc program file, proceed as follows:

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

       The system responds as follows:
	    120

       Enter:
	    10 lf x p  [ 10 factorial ]s.

       The system responds as follows:
	    3628800

       This interprets the dc program saved in prog.dc,	then reads from	stan-
       dard input. The lf x evaluates the function stored in register f,
       which could be defined in the program file prog.dc 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 (com-
  pile)	flag of	the bc command.	When you enter dc expressions directly from
  the keyboard,	press the End-of-File key sequence to end the dc session and
  return to the	shell command line.

SEE ALSO

  Commands:  bc(1)