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