|
|
1.1 root 1:
2:
3: dc Command dc
4:
5:
6:
7:
8: Desk calculator
9:
10: dc [_f_i_l_e]
11:
12: dc is an arbitrary precision desk calculator. It simulates a
13: stacking calculator with ancillary registers. Input must be en-
14: tered in reverse Polish notation. dc maintains the expected num-
15: ber of decimal places during addition, subtraction, and multi-
16: plication, but the user must make an explicit request to maintain
17: any places at all during division.
18:
19: dc reads input from file if specified, and then from the standard
20: input. dc accepts an arbitrary number of commands per line;
21: moreover, spaces need not be left between them.
22:
23: The scale factor of a number is the number of places to the right
24: of its decimal point. The scale factor register controls decimal
25: places in calculations. The scale factor does not affect addi-
26: tion or subtraction. It affects multiplication only if the sum
27: of the scale factors of the two operands is greater than it. The
28: result of every division command has as many decimal places as it
29: specifies. It affects exponentiation in that multiplication is
30: performed as many times as the integer part of the exponent in-
31: dicates; any fractional part of the exponent is ignored.
32:
33: dc recognizes the following commands and constructions:
34:
35: _n_u_m_b_e_r
36: Stack the value of number. A number is a string of symbols
37: taken from the digits `0' through `9', and the capital let-
38: ters `A' through `F' (usual hexadecimal notation), with an
39: optional decimal point. An underscore `_' as a prefix in-
40: dicates a negative number. The letters retain values ten
41: through 15, respectively, regardless of the base chosen by
42: the user.
43:
44: + - / * % ^
45: The arithmetic operations: addition(+), subtraction(-),
46: division(/), multiplication(*), remainder(%), and exponen-
47: tiation(^). dc pops the two top stack elements, performs
48: the desired operation by calling the multiprecision routine
49: desired (see multiprecision arithmetic), and stacks the
50: result.
51:
52: cc Clear the stack.
53:
54: dd Duplicate the top of the stack (so that it occupies the top
55: two positions of the stack).
56:
57: ff Print the contents of the stack and the values of all
58: registers.
59:
60: ii Remove the top of the stack and use its integer part as the
61: assumed input base (default, ten). The new input base must
62:
63:
64: COHERENT Lexicon Page 1
65:
66:
67:
68:
69: dc Command dc
70:
71:
72:
73: be greater than one and less than 17.
74:
75: II Stack the current assumed input base.
76:
77: kk Remove the top of the stack and put it in the internal scale
78: factor register.
79:
80: KK Put the value of the internal scale register (which the k
81: command sets) on the top of the stack.
82:
83: ll _x Load the value of register x to the top of the stack. The
84: value of register x is unaltered. x may be any character.
85:
86: oo Remove the top of the stack and use its integer part as the
87: assumed output base (default, ten). The specified base may
88: be any positive integer.
89:
90: OO Stack the current assumed output base.
91:
92: pp Print the top of the stack. The value remains on the stack.
93:
94: qq Quit the program; control returns to the shell sh.
95:
96: ss _x Remove the top of the stack and store it in register x. The
97: previous contents of x are overwritten. x may be any
98: character.
99:
100: vv Replace the top of the stack by its square root.
101:
102: xx Remove the top of the stack, interpret it as a string con-
103: taining a sequence of dc commands, and execute it.
104:
105: XX Replace the top of the stack by its scale factor (i.e., the
106: number of decimal places it has).
107:
108: zz Place the number of occupied levels of the stack on top of
109: the stack.
110:
111: [...]
112: Place the bracketed character string on top of the stack.
113: The string may be executed subsequently with the x command.
114:
115: <_x >_x =_x !<_x !>_x !=_x
116: Remove the top two elements of the stack and compare them.
117: If there is no `!' sign before the relation, execute
118: register x if the two elements obey the relation. If a `!'
119: sign is present, execute register x if the elements do not
120: obey the relation.
121:
122: ! Interpret the rest of the line as a command to the shell sh.
123: Control returns to dc after command execution terminates.
124:
125: ***** Example *****
126:
127:
128:
129:
130: COHERENT Lexicon Page 2
131:
132:
133:
134:
135: dc Command dc
136:
137:
138:
139: The following example program prints the first 20 Fibbonacci num-
140: bers. The characters 11 and ll are printed in boldface to help you
141: tell them apart.
142:
143:
144: 11sa11sb11sc
145: [llallbdsa+psbllc11+dsc211<y]sy
146: llyx
147:
148:
149: ***** See Also *****
150:
151: bc, commands
152:
153: ***** Diagnostics *****
154:
155: dc produces one of the following error messages should a problem
156: occur:
157:
158:
159: Stack empty Not enough stack elements to perform as requested
160: Out of pushdownNo more room on the stack
161: Nesting depth Too many nested execution levels
162: Out of space Too many digits demanded
163: Out of headers Too many numbers being stored
164:
165:
166: ***** Notes *****
167:
168: For most purposes the infix notation of bc is more convenient
169: than the Polish notation of dc.
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196: COHERENT Lexicon Page 3
197:
198:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.