]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - manuals/dc.1.md.in
Revert incomplete import of version 3.2.0
[FreeBSD/FreeBSD.git] / manuals / dc.1.md.in
1 <!---
2
3 SPDX-License-Identifier: BSD-2-Clause
4
5 Copyright (c) 2018-2020 Gavin D. Howard and contributors.
6
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
9
10 * Redistributions of source code must retain the above copyright notice, this
11   list of conditions and the following disclaimer.
12
13 * Redistributions in binary form must reproduce the above copyright notice,
14   this list of conditions and the following disclaimer in the documentation
15   and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 POSSIBILITY OF SUCH DAMAGE.
28
29 -->
30
31 # Name
32
33 dc - arbitrary-precision reverse-Polish notation calculator
34
35 # SYNOPSIS
36
37 **dc** [**-hiPvVx**] [**--version**] [**--help**] [**--interactive**] [**--no-prompt**] [**--extended-register**] [**-e** *expr*] [**--expression**=*expr*...] [**-f** *file*...] [**-file**=*file*...] [*file*...]
38
39 # DESCRIPTION
40
41 dc(1) is an arbitrary-precision calculator. It uses a stack (reverse Polish
42 notation) to store numbers and results of computations. Arithmetic operations
43 pop arguments off of the stack and push the results.
44
45 If no files are given on the command-line as extra arguments (i.e., not as
46 **-f** or **--file** arguments), then dc(1) reads from **stdin**. Otherwise,
47 those files are processed, and dc(1) will then exit.
48
49 This is different from the dc(1) on OpenBSD and possibly other dc(1)
50 implementations, where **-e** (**--expression**) and **-f** (**--file**)
51 arguments cause dc(1) to execute them and exit. The reason for this is that this
52 dc(1) allows users to set arguments in the environment variable **DC_ENV_ARGS**
53 (see the **ENVIRONMENT VARIABLES** section). Any expressions given on the
54 command-line should be used to set up a standard environment. For example, if a
55 user wants the **scale** always set to **10**, they can set **DC_ENV_ARGS** to
56 **-e 10k**, and this dc(1) will always start with a **scale** of **10**.
57
58 If users want to have dc(1) exit after processing all input from **-e** and
59 **-f** arguments (and their equivalents), then they can just simply add **-e q**
60 as the last command-line argument or define the environment variable
61 **DC_EXPR_EXIT**.
62
63 # OPTIONS
64
65 The following are the options that dc(1) accepts.
66
67 **-h**, **--help**
68
69 :   Prints a usage message and quits.
70
71 **-v**, **-V**, **--version**
72
73 :   Print the version information (copyright header) and exit.
74
75 **-i**, **--interactive**
76
77 :   Forces interactive mode. (See the **INTERACTIVE MODE** section.)
78
79     This is a **non-portable extension**.
80
81 **-P**, **--no-prompt**
82
83 {{ A E H N EH EN HN EHN }}
84 :   Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
85     See the **TTY MODE** section) This is mostly for those users that do not
86     want a prompt or are not used to having them in dc(1). Most of those users
87     would want to put this option in **DC_ENV_ARGS**.
88 {{ end }}
89 {{ P EP HP NP EHP ENP HNP EHNP }}
90 :   This option is a no-op.
91 {{ end }}
92
93     This is a **non-portable extension**.
94
95 **-x** **--extended-register**
96
97 :   Enables extended register mode. See the *Extended Register Mode* subsection
98     of the **REGISTERS** section for more information.
99
100     This is a **non-portable extension**.
101
102 **-e** *expr*, **--expression**=*expr*
103
104 :   Evaluates *expr*. If multiple expressions are given, they are evaluated in
105     order. If files are given as well (see below), the expressions and files are
106     evaluated in the order given. This means that if a file is given before an
107     expression, the file is read in and evaluated first.
108
109     After processing all expressions and files, dc(1) will exit, unless **-**
110     (**stdin**) was given as an argument at least once to **-f** or **--file**.
111
112     This is a **non-portable extension**.
113
114 **-f** *file*, **--file**=*file*
115
116 :   Reads in *file* and evaluates it, line by line, as though it were read
117     through **stdin**. If expressions are also given (see above), the
118     expressions are evaluated in the order given.
119
120     After processing all expressions and files, dc(1) will exit, unless **-**
121     (**stdin**) was given as an argument at least once to **-f** or **--file**.
122     However, if any other **-e**, **--expression**, **-f**, or **--file**
123     arguments are given after that, bc(1) will give a fatal error and exit.
124
125     This is a **non-portable extension**.
126
127 All long options are **non-portable extensions**.
128
129 # STDOUT
130
131 Any non-error output is written to **stdout**.
132
133 **Note**: Unlike other dc(1) implementations, this dc(1) will issue a fatal
134 error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
135 **stdout** is closed, as in **dc <file> >&-**, it will quit with an error. This
136 is done so that dc(1) can report problems when **stdout** is redirected to a
137 file.
138
139 If there are scripts that depend on the behavior of other dc(1) implementations,
140 it is recommended that those scripts be changed to redirect **stdout** to
141 **/dev/null**.
142
143 # STDERR
144
145 Any error output is written to **stderr**.
146
147 **Note**: Unlike other dc(1) implementations, this dc(1) will issue a fatal
148 error (see the **EXIT STATUS** section) if it cannot write to **stderr**, so if
149 **stderr** is closed, as in **dc <file> 2>&-**, it will quit with an error. This
150 is done so that dc(1) can exit with an error code when **stderr** is redirected
151 to a file.
152
153 If there are scripts that depend on the behavior of other dc(1) implementations,
154 it is recommended that those scripts be changed to redirect **stderr** to
155 **/dev/null**.
156
157 # SYNTAX
158
159 Each item in the input source code, either a number (see the **NUMBERS**
160 section) or a command (see the **COMMANDS** section), is processed and executed,
161 in order. Input is processed immediately when entered.
162
163 **ibase** is a register (see the **REGISTERS** section) that determines how to
164 interpret constant numbers. It is the "input" base, or the number base used for
165 interpreting input numbers. **ibase** is initially **10**. The max allowable
166 value for **ibase** is **16**. The min allowable value for **ibase** is **2**.
167 The max allowable value for **ibase** can be queried in dc(1) programs with the
168 **T** command.
169
170 **obase** is a register (see the **REGISTERS** section) that determines how to
171 output results. It is the "output" base, or the number base used for outputting
172 numbers. **obase** is initially **10**. The max allowable value for **obase** is
173 **DC_BASE_MAX** and can be queried with the **U** command. The min allowable
174 {{ A H N P HN HP NP HNP }}
175 value for **obase** is **0**. If **obase** is **0**, values are output in
176 scientific notation, and if **obase** is **1**, values are output in engineering
177 notation. Otherwise, values are output in the specified base.
178
179 Outputting in scientific and engineering notations are **non-portable
180 extensions**.
181 {{ end }}
182 {{ E EH EN EP EHN EHP ENP EHNP }}
183 value for **obase** is **2**. Values are output in the specified base.
184 {{ end }}
185
186 The *scale* of an expression is the number of digits in the result of the
187 expression right of the decimal point, and **scale** is a register (see the
188 **REGISTERS** section) that sets the precision of any operations (with
189 exceptions). **scale** is initially **0**. **scale** cannot be negative. The max
190 allowable value for **scale** can be queried in dc(1) programs with the **V**
191 command.
192
193 {{ A H N P HN HP NP HNP }}
194 **seed** is a register containing the current seed for the pseudo-random number
195 generator. If the current value of **seed** is queried and stored, then if it is
196 assigned to **seed** later, the pseudo-random number generator is guaranteed to
197 produce the same sequence of pseudo-random numbers that were generated after the
198 value of **seed** was first queried.
199
200 Multiple values assigned to **seed** can produce the same sequence of
201 pseudo-random numbers. Likewise, when a value is assigned to **seed**, it is not
202 guaranteed that querying **seed** immediately after will return the same value.
203 In addition, the value of **seed** will change after any call to the **'**
204 command or the **"** command that does not get receive a value of **0** or
205 **1**. The maximum integer returned by the **'** command can be queried with the
206 **W** command.
207
208 **Note**: The values returned by the pseudo-random number generator with the
209 **'** and **"** commands are guaranteed to **NOT** be cryptographically secure.
210 This is a consequence of using a seeded pseudo-random number generator. However,
211 they **are** guaranteed to be reproducible with identical **seed** values.
212
213 The pseudo-random number generator, **seed**, and all associated operations are
214 **non-portable extensions**.
215 {{ end }}
216
217 ## Comments
218
219 Comments go from **#** until, and not including, the next newline. This is a
220 **non-portable extension**.
221
222 # NUMBERS
223
224 Numbers are strings made up of digits, uppercase letters up to **F**, and at
225 most **1** period for a radix. Numbers can have up to **DC_NUM_MAX** digits.
226 Uppercase letters are equal to **9** + their position in the alphabet (i.e.,
227 **A** equals **10**, or **9+1**). If a digit or letter makes no sense with the
228 current value of **ibase**, they are set to the value of the highest valid digit
229 in **ibase**.
230
231 Single-character numbers (i.e., **A** alone) take the value that they would have
232 if they were valid digits, regardless of the value of **ibase**. This means that
233 **A** alone always equals decimal **10** and **F** alone always equals decimal
234 **15**.
235
236 {{ A H N P HN HP NP HNP }}
237 In addition, dc(1) accepts numbers in scientific notation. These have the form
238 **\<number\>e\<integer\>**. The power (the portion after the **e**) must be an
239 integer. An example is **1.89237e9**, which is equal to **1892370000**. Negative
240 exponents are also allowed, so **4.2890e_3** is equal to **0.0042890**.
241
242 **WARNING**: Both the number and the exponent in scientific notation are
243 interpreted according to the current **ibase**, but the number is still
244 multiplied by **10\^exponent** regardless of the current **ibase**. For example,
245 if **ibase** is **16** and dc(1) is given the number string **FFeA**, the
246 resulting decimal number will be **2550000000000**, and if dc(1) is given the
247 number string **10e_4**, the resulting decimal number will be **0.0016**.
248
249 Accepting input as scientific notation is a **non-portable extension**.
250 {{ end }}
251
252 # COMMANDS
253
254 The valid commands are listed below.
255
256 ## Printing
257
258 These commands are used for printing.
259
260 {{ A H N P HN HP NP HNP }}
261 Note that both scientific notation and engineering notation are available for
262 printing numbers. Scientific notation is activated by assigning **0** to
263 **obase** using **0o**, and engineering notation is activated by assigning **1**
264 to **obase** using **1o**. To deactivate them, just assign a different value to
265 **obase**.
266
267 Printing numbers in scientific notation and/or engineering notation is a
268 **non-portable extension**.
269 {{ end }}
270
271 **p**
272
273 :   Prints the value on top of the stack, whether number or string, and prints a
274     newline after.
275
276     This does not alter the stack.
277
278 **n**
279
280 :   Prints the value on top of the stack, whether number or string, and pops it
281     off of the stack.
282
283 **P**
284
285 :   Pops a value off the stack.
286
287     If the value is a number, it is truncated and the absolute value of the
288     result is printed as though **obase** is **UCHAR_MAX+1** and each digit is
289     interpreted as an ASCII character, making it a byte stream.
290
291     If the value is a string, it is printed without a trailing newline.
292
293     This is a **non-portable extension**.
294
295 **f**
296
297 :   Prints the entire contents of the stack, in order from newest to oldest,
298     without altering anything.
299
300     Users should use this command when they get lost.
301
302 ## Arithmetic
303
304 These are the commands used for arithmetic.
305
306 **+**
307
308 :   The top two values are popped off the stack, added, and the result is pushed
309     onto the stack. The *scale* of the result is equal to the max *scale* of
310     both operands.
311
312 **-**
313
314 :   The top two values are popped off the stack, subtracted, and the result is
315     pushed onto the stack. The *scale* of the result is equal to the max
316     *scale* of both operands.
317
318 **\***
319
320 :   The top two values are popped off the stack, multiplied, and the result is
321     pushed onto the stack. If **a** is the *scale* of the first expression and
322     **b** is the *scale* of the second expression, the *scale* of the result
323     is equal to **min(a+b,max(scale,a,b))** where **min()** and **max()** return
324     the obvious values.
325
326 **/**
327
328 :   The top two values are popped off the stack, divided, and the result is
329     pushed onto the stack. The *scale* of the result is equal to **scale**.
330
331     The first value popped off of the stack must be non-zero.
332
333 **%**
334
335 :   The top two values are popped off the stack, remaindered, and the result is
336     pushed onto the stack.
337
338     Remaindering is equivalent to 1) Computing **a/b** to current **scale**, and
339     2) Using the result of step 1 to calculate **a-(a/b)\*b** to *scale*
340     **max(scale+scale(b),scale(a))**.
341
342     The first value popped off of the stack must be non-zero.
343
344 **~**
345
346 :   The top two values are popped off the stack, divided and remaindered, and
347     the results (divided first, remainder second) are pushed onto the stack.
348     This is equivalent to **x y / x y %** except that **x** and **y** are only
349     evaluated once.
350
351     The first value popped off of the stack must be non-zero.
352
353     This is a **non-portable extension**.
354
355 **\^**
356
357 :   The top two values are popped off the stack, the second is raised to the
358     power of the first, and the result is pushed onto the stack.
359
360     The first value popped off of the stack must be an integer, and if that
361     value is negative, the second value popped off of the stack must be
362     non-zero.
363
364 **v**
365
366 :   The top value is popped off the stack, its square root is computed, and the
367     result is pushed onto the stack. The *scale* of the result is equal to
368     **scale**.
369
370     The value popped off of the stack must be non-negative.
371
372 **\_**
373
374 :   If this command *immediately* precedes a number (i.e., no spaces or other
375     commands), then that number is input as a negative number.
376
377     Otherwise, the top value on the stack is popped and copied, and the copy is
378     negated and pushed onto the stack. This behavior without a number is a
379     **non-portable extension**.
380
381 **b**
382
383 :   The top value is popped off the stack, and if it is zero, it is pushed back
384     onto the stack. Otherwise, its absolute value is pushed onto the stack.
385
386     This is a **non-portable extension**.
387
388 **|**
389
390 :   The top three values are popped off the stack, a modular exponentiation is
391     computed, and the result is pushed onto the stack.
392
393     The first value popped is used as the reduction modulus and must be an
394     integer and non-zero. The second value popped is used as the exponent and
395     must be an integer and non-negative. The third value popped is the base and
396     must be an integer.
397
398     This is a **non-portable extension**.
399
400 {{ A H N P HN HP NP HNP }}
401 **\$**
402
403 :   The top value is popped off the stack and copied, and the copy is truncated
404     and pushed onto the stack.
405
406     This is a **non-portable extension**.
407
408 **\@**
409
410 :   The top two values are popped off the stack, and the precision of the second
411     is set to the value of the first, whether by truncation or extension.
412
413     The first value popped off of the stack must be an integer and non-negative.
414
415     This is a **non-portable extension**.
416
417 **H**
418
419 :   The top two values are popped off the stack, and the second is shifted left
420     (radix shifted right) to the value of the first.
421
422     The first value popped off of the stack must be an integer and non-negative.
423
424     This is a **non-portable extension**.
425
426 **h**
427
428 :   The top two values are popped off the stack, and the second is shifted right
429     (radix shifted left) to the value of the first.
430
431     The first value popped off of the stack must be an integer and non-negative.
432
433     This is a **non-portable extension**.
434 {{ end }}
435
436 **G**
437
438 :   The top two values are popped off of the stack, they are compared, and a
439     **1** is pushed if they are equal, or **0** otherwise.
440
441     This is a **non-portable extension**.
442
443 **N**
444
445 :   The top value is popped off of the stack, and if it a **0**, a **1** is
446     pushed; otherwise, a **0** is pushed.
447
448     This is a **non-portable extension**.
449
450 **(**
451
452 :   The top two values are popped off of the stack, they are compared, and a
453     **1** is pushed if the first is less than the second, or **0** otherwise.
454
455     This is a **non-portable extension**.
456
457 **{**
458
459 :   The top two values are popped off of the stack, they are compared, and a
460     **1** is pushed if the first is less than or equal to the second, or **0**
461     otherwise.
462
463     This is a **non-portable extension**.
464
465 **)**
466
467 :   The top two values are popped off of the stack, they are compared, and a
468     **1** is pushed if the first is greater than the second, or **0** otherwise.
469
470     This is a **non-portable extension**.
471
472 **}**
473
474 :   The top two values are popped off of the stack, they are compared, and a
475     **1** is pushed if the first is greater than or equal to the second, or
476     **0** otherwise.
477
478     This is a **non-portable extension**.
479
480 **M**
481
482 :   The top two values are popped off of the stack. If they are both non-zero, a
483     **1** is pushed onto the stack. If either of them is zero, or both of them
484     are, then a **0** is pushed onto the stack.
485
486     This is like the **&&** operator in bc(1), and it is *not* a short-circuit
487     operator.
488
489     This is a **non-portable extension**.
490
491 **m**
492
493 :   The top two values are popped off of the stack. If at least one of them is
494     non-zero, a **1** is pushed onto the stack. If both of them are zero, then a
495     **0** is pushed onto the stack.
496
497     This is like the **||** operator in bc(1), and it is *not* a short-circuit
498     operator.
499
500     This is a **non-portable extension**.
501
502 {{ A H N P HN HP NP HNP }}
503 ## Pseudo-Random Number Generator
504
505 dc(1) has a built-in pseudo-random number generator. These commands query the
506 pseudo-random number generator. (See Parameters for more information about the
507 **seed** value that controls the pseudo-random number generator.)
508
509 The pseudo-random number generator is guaranteed to **NOT** be
510 cryptographically secure.
511
512 **'**
513
514 :   Generates an integer between 0 and **DC_RAND_MAX**, inclusive (see the
515     **LIMITS** section).
516
517     The generated integer is made as unbiased as possible, subject to the
518     limitations of the pseudo-random number generator.
519
520     This is a **non-portable extension**.
521
522 **"**
523
524 :   Pops a value off of the stack, which is used as an **exclusive** upper bound
525     on the integer that will be generated. If the bound is negative or is a
526     non-integer, an error is raised, and dc(1) resets (see the **RESET**
527     section) while **seed** remains unchanged. If the bound is larger than
528     **DC_RAND_MAX**, the higher bound is honored by generating several
529     pseudo-random integers, multiplying them by appropriate powers of
530     **DC_RAND_MAX+1**, and adding them together. Thus, the size of integer that
531     can be generated with this command is unbounded. Using this command will
532     change the value of **seed**, unless the operand is **0** or **1**. In that
533     case, **0** is pushed onto the stack, and **seed** is *not* changed.
534
535     The generated integer is made as unbiased as possible, subject to the
536     limitations of the pseudo-random number generator.
537
538     This is a **non-portable extension**.
539 {{ end }}
540
541 ## Stack Control
542
543 These commands control the stack.
544
545 **c**
546
547 :   Removes all items from ("clears") the stack.
548
549 **d**
550
551 :   Copies the item on top of the stack ("duplicates") and pushes the copy onto
552     the stack.
553
554 **r**
555
556 :   Swaps ("reverses") the two top items on the stack.
557
558 **R**
559
560 :   Pops ("removes") the top value from the stack.
561
562 ## Register Control
563
564 These commands control registers (see the **REGISTERS** section).
565
566 **s***r*
567
568 :   Pops the value off the top of the stack and stores it into register *r*.
569
570 **l***r*
571
572 :   Copies the value in register *r* and pushes it onto the stack. This does not
573     alter the contents of *r*.
574
575 **S***r*
576
577 :   Pops the value off the top of the (main) stack and pushes it onto the stack
578     of register *r*. The previous value of the register becomes inaccessible.
579
580 **L***r*
581
582 :   Pops the value off the top of the stack for register *r* and push it onto
583     the main stack. The previous value in the stack for register *r*, if any, is
584     now accessible via the **l***r* command.
585
586 ## Parameters
587
588 {{ A H N P HN HP NP HNP }}
589 These commands control the values of **ibase**, **obase**, **scale**, and
590 **seed**. Also see the **SYNTAX** section.
591 {{ end }}
592 {{ E EH EN EP EHN EHP ENP EHNP }}
593 These commands control the values of **ibase**, **obase**, and **scale**. Also
594 see the **SYNTAX** section.
595 {{ end }}
596
597 **i**
598
599 :   Pops the value off of the top of the stack and uses it to set **ibase**,
600     which must be between **2** and **16**, inclusive.
601
602     If the value on top of the stack has any *scale*, the *scale* is ignored.
603
604 **o**
605
606 :   Pops the value off of the top of the stack and uses it to set **obase**,
607 {{ A H N P HN HP NP HNP }}
608     which must be between **0** and **DC_BASE_MAX**, inclusive (see the
609     **LIMITS** section and the **NUMBERS** section).
610 {{ end }}
611 {{ E EH EN EP EHN EHP ENP EHNP }}
612     which must be between **2** and **DC_BASE_MAX**, inclusive (see the
613     **LIMITS** section).
614 {{ end }}
615
616     If the value on top of the stack has any *scale*, the *scale* is ignored.
617
618 **k**
619
620 :   Pops the value off of the top of the stack and uses it to set **scale**,
621     which must be non-negative.
622
623     If the value on top of the stack has any *scale*, the *scale* is ignored.
624
625 {{ A H N P HN HP NP HNP }}
626 **j**
627
628 :   Pops the value off of the top of the stack and uses it to set **seed**. The
629     meaning of **seed** is dependent on the current pseudo-random number
630     generator but is guaranteed to not change except for new major versions.
631
632     The *scale* and sign of the value may be significant.
633
634     If a previously used **seed** value is used again, the pseudo-random number
635     generator is guaranteed to produce the same sequence of pseudo-random
636     numbers as it did when the **seed** value was previously used.
637
638     The exact value assigned to **seed** is not guaranteed to be returned if the
639     **J** command is used. However, if **seed** *does* return a different value,
640     both values, when assigned to **seed**, are guaranteed to produce the same
641     sequence of pseudo-random numbers. This means that certain values assigned
642     to **seed** will not produce unique sequences of pseudo-random numbers.
643
644     There is no limit to the length (number of significant decimal digits) or
645     *scale* of the value that can be assigned to **seed**.
646
647     This is a **non-portable extension**.
648 {{ end }}
649
650 **I**
651
652 :   Pushes the current value of **ibase** onto the main stack.
653
654 **O**
655
656 :   Pushes the current value of **obase** onto the main stack.
657
658 **K**
659
660 :   Pushes the current value of **scale** onto the main stack.
661
662 {{ A H N P HN HP NP HNP }}
663 **J**
664
665 :   Pushes the current value of **seed** onto the main stack.
666
667     This is a **non-portable extension**.
668 {{ end }}
669
670 **T**
671
672 :   Pushes the maximum allowable value of **ibase** onto the main stack.
673
674     This is a **non-portable extension**.
675
676 **U**
677
678 :   Pushes the maximum allowable value of **obase** onto the main stack.
679
680     This is a **non-portable extension**.
681
682 **V**
683
684 :   Pushes the maximum allowable value of **scale** onto the main stack.
685
686     This is a **non-portable extension**.
687
688 {{ A H N P HN HP NP HNP }}
689 **W**
690
691 :   Pushes the maximum (inclusive) integer that can be generated with the **'**
692     pseudo-random number generator command.
693
694     This is a **non-portable extension**.
695 {{ end }}
696
697 ## Strings
698
699 The following commands control strings.
700
701 dc(1) can work with both numbers and strings, and registers (see the
702 **REGISTERS** section) can hold both strings and numbers. dc(1) always knows
703 whether the contents of a register are a string or a number.
704
705 While arithmetic operations have to have numbers, and will print an error if
706 given a string, other commands accept strings.
707
708 Strings can also be executed as macros. For example, if the string **[1pR]** is
709 executed as a macro, then the code **1pR** is executed, meaning that the **1**
710 will be printed with a newline after and then popped from the stack.
711
712 **\[**_characters_**\]**
713
714 :   Makes a string containing *characters* and pushes it onto the stack.
715
716     If there are brackets (**\[** and **\]**) in the string, then they must be
717     balanced. Unbalanced brackets can be escaped using a backslash (**\\**)
718     character.
719
720     If there is a backslash character in the string, the character after it
721     (even another backslash) is put into the string verbatim, but the (first)
722     backslash is not.
723
724 **a**
725
726 :   The value on top of the stack is popped.
727
728     If it is a number, it is truncated and its absolute value is taken. The
729     result mod **UCHAR_MAX+1** is calculated. If that result is **0**, push an
730     empty string; otherwise, push a one-character string where the character is
731     the result of the mod interpreted as an ASCII character.
732
733     If it is a string, then a new string is made. If the original string is
734     empty, the new string is empty. If it is not, then the first character of
735     the original string is used to create the new string as a one-character
736     string. The new string is then pushed onto the stack.
737
738     This is a **non-portable extension**.
739
740 **x**
741
742 :   Pops a value off of the top of the stack.
743
744     If it is a number, it is pushed back onto the stack.
745
746     If it is a string, it is executed as a macro.
747
748     This behavior is the norm whenever a macro is executed, whether by this
749     command or by the conditional execution commands below.
750
751 **\>***r*
752
753 :   Pops two values off of the stack that must be numbers and compares them. If
754     the first value is greater than the second, then the contents of register
755     *r* are executed.
756
757     For example, **0 1>a** will execute the contents of register **a**, and
758     **1 0>a** will not.
759
760     If either or both of the values are not numbers, dc(1) will raise an error
761     and reset (see the **RESET** section).
762
763 **>***r***e***s*
764
765 :   Like the above, but will execute register *s* if the comparison fails.
766
767     If either or both of the values are not numbers, dc(1) will raise an error
768     and reset (see the **RESET** section).
769
770     This is a **non-portable extension**.
771
772 **!\>***r*
773
774 :   Pops two values off of the stack that must be numbers and compares them. If
775     the first value is not greater than the second (less than or equal to), then
776     the contents of register *r* are executed.
777
778     If either or both of the values are not numbers, dc(1) will raise an error
779     and reset (see the **RESET** section).
780
781 **!\>***r***e***s*
782
783 :   Like the above, but will execute register *s* if the comparison fails.
784
785     If either or both of the values are not numbers, dc(1) will raise an error
786     and reset (see the **RESET** section).
787
788     This is a **non-portable extension**.
789
790 **\<***r*
791
792 :   Pops two values off of the stack that must be numbers and compares them. If
793     the first value is less than the second, then the contents of register *r*
794     are executed.
795
796     If either or both of the values are not numbers, dc(1) will raise an error
797     and reset (see the **RESET** section).
798
799 **\<***r***e***s*
800
801 :   Like the above, but will execute register *s* if the comparison fails.
802
803     If either or both of the values are not numbers, dc(1) will raise an error
804     and reset (see the **RESET** section).
805
806     This is a **non-portable extension**.
807
808 **!\<***r*
809
810 :   Pops two values off of the stack that must be numbers and compares them. If
811     the first value is not less than the second (greater than or equal to), then
812     the contents of register *r* are executed.
813
814     If either or both of the values are not numbers, dc(1) will raise an error
815     and reset (see the **RESET** section).
816
817 **!\<***r***e***s*
818
819 :   Like the above, but will execute register *s* if the comparison fails.
820
821     If either or both of the values are not numbers, dc(1) will raise an error
822     and reset (see the **RESET** section).
823
824     This is a **non-portable extension**.
825
826 **=***r*
827
828 :   Pops two values off of the stack that must be numbers and compares them. If
829     the first value is equal to the second, then the contents of register *r*
830     are executed.
831
832     If either or both of the values are not numbers, dc(1) will raise an error
833     and reset (see the **RESET** section).
834
835 **=***r***e***s*
836
837 :   Like the above, but will execute register *s* if the comparison fails.
838
839     If either or both of the values are not numbers, dc(1) will raise an error
840     and reset (see the **RESET** section).
841
842     This is a **non-portable extension**.
843
844 **!=***r*
845
846 :   Pops two values off of the stack that must be numbers and compares them. If
847     the first value is not equal to the second, then the contents of register
848     *r* are executed.
849
850     If either or both of the values are not numbers, dc(1) will raise an error
851     and reset (see the **RESET** section).
852
853 **!=***r***e***s*
854
855 :   Like the above, but will execute register *s* if the comparison fails.
856
857     If either or both of the values are not numbers, dc(1) will raise an error
858     and reset (see the **RESET** section).
859
860     This is a **non-portable extension**.
861
862 **?**
863
864 :   Reads a line from the **stdin** and executes it. This is to allow macros to
865     request input from users.
866
867 **q**
868
869 :   During execution of a macro, this exits the execution of that macro and the
870     execution of the macro that executed it. If there are no macros, or only one
871     macro executing, dc(1) exits.
872
873 **Q**
874
875 :   Pops a value from the stack which must be non-negative and is used the
876     number of macro executions to pop off of the execution stack. If the number
877     of levels to pop is greater than the number of executing macros, dc(1)
878     exits.
879
880 ## Status
881
882 These commands query status of the stack or its top value.
883
884 **Z**
885
886 :   Pops a value off of the stack.
887
888     If it is a number, calculates the number of significant decimal digits it
889     has and pushes the result.
890
891     If it is a string, pushes the number of characters the string has.
892
893 **X**
894
895 :   Pops a value off of the stack.
896
897     If it is a number, pushes the *scale* of the value onto the stack.
898
899     If it is a string, pushes **0**.
900
901 **z**
902
903 :   Pushes the current stack depth (before execution of this command).
904
905 ## Arrays
906
907 These commands manipulate arrays.
908
909 **:***r*
910
911 :   Pops the top two values off of the stack. The second value will be stored in
912     the array *r* (see the **REGISTERS** section), indexed by the first value.
913
914 **;***r*
915
916 :   Pops the value on top of the stack and uses it as an index into the array
917     *r*. The selected value is then pushed onto the stack.
918
919 # REGISTERS
920
921 Registers are names that can store strings, numbers, and arrays. (Number/string
922 registers do not interfere with array registers.)
923
924 Each register is also its own stack, so the current register value is the top of
925 the stack for the register. All registers, when first referenced, have one value
926 (**0**) in their stack.
927
928 In non-extended register mode, a register name is just the single character that
929 follows any command that needs a register name. The only exception is a newline
930 (**'\\n'**); it is a parse error for a newline to be used as a register name.
931
932 ## Extended Register Mode
933
934 Unlike most other dc(1) implentations, this dc(1) provides nearly unlimited
935 amounts of registers, if extended register mode is enabled.
936
937 If extended register mode is enabled (**-x** or **--extended-register**
938 command-line arguments are given), then normal single character registers are
939 used *unless* the character immediately following a command that needs a
940 register name is a space (according to **isspace()**) and not a newline
941 (**'\\n'**).
942
943 In that case, the register name is found according to the regex
944 **\[a-z\]\[a-z0-9\_\]\*** (like bc(1) identifiers), and it is a parse error if
945 the next non-space characters do not match that regex.
946
947 # RESET
948
949 When dc(1) encounters an error or a signal that it has a non-default handler
950 for, it resets. This means that several things happen.
951
952 First, any macros that are executing are stopped and popped off the stack.
953 The behavior is not unlike that of exceptions in programming languages. Then
954 the execution point is set so that any code waiting to execute (after all
955 macros returned) is skipped.
956
957 Thus, when dc(1) resets, it skips any remaining code waiting to be executed.
958 Then, if it is interactive mode, and the error was not a fatal error (see the
959 **EXIT STATUS** section), it asks for more input; otherwise, it exits with the
960 appropriate return code.
961
962 # PERFORMANCE
963
964 Most dc(1) implementations use **char** types to calculate the value of **1**
965 decimal digit at a time, but that can be slow. This dc(1) does something
966 different.
967
968 It uses large integers to calculate more than **1** decimal digit at a time. If
969 built in a environment where **DC_LONG_BIT** (see the **LIMITS** section) is
970 **64**, then each integer has **9** decimal digits. If built in an environment
971 where **DC_LONG_BIT** is **32** then each integer has **4** decimal digits. This
972 value (the number of decimal digits per large integer) is called
973 **DC_BASE_DIGS**.
974
975 In addition, this dc(1) uses an even larger integer for overflow checking. This
976 integer type depends on the value of **DC_LONG_BIT**, but is always at least
977 twice as large as the integer type used to store digits.
978
979 # LIMITS
980
981 The following are the limits on dc(1):
982
983 **DC_LONG_BIT**
984
985 :   The number of bits in the **long** type in the environment where dc(1) was
986     built. This determines how many decimal digits can be stored in a single
987     large integer (see the **PERFORMANCE** section).
988
989 **DC_BASE_DIGS**
990
991 :   The number of decimal digits per large integer (see the **PERFORMANCE**
992     section). Depends on **DC_LONG_BIT**.
993
994 **DC_BASE_POW**
995
996 :   The max decimal number that each large integer can store (see
997     **DC_BASE_DIGS**) plus **1**. Depends on **DC_BASE_DIGS**.
998
999 **DC_OVERFLOW_MAX**
1000
1001 :   The max number that the overflow type (see the **PERFORMANCE** section) can
1002     hold. Depends on **DC_LONG_BIT**.
1003
1004 **DC_BASE_MAX**
1005
1006 :   The maximum output base. Set at **DC_BASE_POW**.
1007
1008 **DC_DIM_MAX**
1009
1010 :   The maximum size of arrays. Set at **SIZE_MAX-1**.
1011
1012 **DC_SCALE_MAX**
1013
1014 :   The maximum **scale**. Set at **DC_OVERFLOW_MAX-1**.
1015
1016 **DC_STRING_MAX**
1017
1018 :   The maximum length of strings. Set at **DC_OVERFLOW_MAX-1**.
1019
1020 **DC_NAME_MAX**
1021
1022 :   The maximum length of identifiers. Set at **DC_OVERFLOW_MAX-1**.
1023
1024 **DC_NUM_MAX**
1025
1026 :   The maximum length of a number (in decimal digits), which includes digits
1027     after the decimal point. Set at **DC_OVERFLOW_MAX-1**.
1028
1029 {{ A H N P HN HP NP HNP }}
1030 **DC_RAND_MAX**
1031
1032 :   The maximum integer (inclusive) returned by the **'** command, if dc(1). Set
1033     at **2\^DC_LONG_BIT-1**.
1034 {{ end }}
1035
1036 Exponent
1037
1038 :   The maximum allowable exponent (positive or negative). Set at
1039     **DC_OVERFLOW_MAX**.
1040
1041 Number of vars
1042
1043 :   The maximum number of vars/arrays. Set at **SIZE_MAX-1**.
1044
1045 These limits are meant to be effectively non-existent; the limits are so large
1046 (at least on 64-bit machines) that there should not be any point at which they
1047 become a problem. In fact, memory should be exhausted before these limits should
1048 be hit.
1049
1050 # ENVIRONMENT VARIABLES
1051
1052 dc(1) recognizes the following environment variables:
1053
1054 **DC_ENV_ARGS**
1055
1056 :   This is another way to give command-line arguments to dc(1). They should be
1057     in the same format as all other command-line arguments. These are always
1058     processed first, so any files given in **DC_ENV_ARGS** will be processed
1059     before arguments and files given on the command-line. This gives the user
1060     the ability to set up "standard" options and files to be used at every
1061     invocation. The most useful thing for such files to contain would be useful
1062     functions that the user might want every time dc(1) runs. Another use would
1063     be to use the **-e** option to set **scale** to a value other than **0**.
1064
1065     The code that parses **DC_ENV_ARGS** will correctly handle quoted arguments,
1066     but it does not understand escape sequences. For example, the string
1067     **"/home/gavin/some dc file.dc"** will be correctly parsed, but the string
1068     **"/home/gavin/some \"dc\" file.dc"** will include the backslashes.
1069
1070     The quote parsing will handle either kind of quotes, **'** or **"**. Thus,
1071     if you have a file with any number of single quotes in the name, you can use
1072     double quotes as the outside quotes, as in **"some 'bc' file.bc"**, and vice
1073     versa if you have a file with double quotes. However, handling a file with
1074     both kinds of quotes in **DC_ENV_ARGS** is not supported due to the
1075     complexity of the parsing, though such files are still supported on the
1076     command-line where the parsing is done by the shell.
1077
1078 **DC_LINE_LENGTH**
1079
1080 :   If this environment variable exists and contains an integer that is greater
1081     than **1** and is less than **UINT16_MAX** (**2\^16-1**), dc(1) will output
1082     lines to that length, including the backslash newline combo. The default
1083     line length is **70**.
1084
1085 **DC_EXPR_EXIT**
1086
1087 :   If this variable exists (no matter the contents), dc(1) will exit
1088     immediately after executing expressions and files given by the **-e** and/or
1089     **-f** command-line options (and any equivalents).
1090
1091 # EXIT STATUS
1092
1093 dc(1) returns the following exit statuses:
1094
1095 **0**
1096
1097 :   No error.
1098
1099 **1**
1100
1101 :   A math error occurred. This follows standard practice of using **1** for
1102     expected errors, since math errors will happen in the process of normal
1103     execution.
1104
1105     Math errors include divide by **0**, taking the square root of a negative
1106 {{ A H N P HN HP NP HNP }}
1107     number, using a negative number as a bound for the pseudo-random number
1108     generator, attempting to convert a negative number to a hardware integer,
1109     overflow when converting a number to a hardware integer, and attempting to
1110     use a non-integer where an integer is required.
1111
1112     Converting to a hardware integer happens for the second operand of the power
1113     (**\^**), places (**\@**), left shift (**H**), and right shift (**h**)
1114     operators.
1115 {{ end }}
1116 {{ E EH EN EP EHN EHP ENP EHNP }}
1117     number, attempting to convert a negative number to a hardware integer,
1118     overflow when converting a number to a hardware integer, and attempting to
1119     use a non-integer where an integer is required.
1120
1121     Converting to a hardware integer happens for the second operand of the power
1122     (**\^**) operator.
1123 {{ end }}
1124
1125 **2**
1126
1127 :   A parse error occurred.
1128
1129     Parse errors include unexpected **EOF**, using an invalid character, failing
1130     to find the end of a string or comment, and using a token where it is
1131     invalid.
1132
1133 **3**
1134
1135 :   A runtime error occurred.
1136
1137     Runtime errors include assigning an invalid number to **ibase**, **obase**,
1138     or **scale**; give a bad expression to a **read()** call, calling **read()**
1139     inside of a **read()** call, type errors, and attempting an operation when
1140     the stack has too few elements.
1141
1142 **4**
1143
1144 :   A fatal error occurred.
1145
1146     Fatal errors include memory allocation errors, I/O errors, failing to open
1147     files, attempting to use files that do not have only ASCII characters (dc(1)
1148     only accepts ASCII characters), attempting to open a directory as a file,
1149     and giving invalid command-line options.
1150
1151 The exit status **4** is special; when a fatal error occurs, dc(1) always exits
1152 and returns **4**, no matter what mode dc(1) is in.
1153
1154 The other statuses will only be returned when dc(1) is not in interactive mode
1155 (see the **INTERACTIVE MODE** section), since dc(1) resets its state (see the
1156 **RESET** section) and accepts more input when one of those errors occurs in
1157 interactive mode. This is also the case when interactive mode is forced by the
1158 **-i** flag or **--interactive** option.
1159
1160 These exit statuses allow dc(1) to be used in shell scripting with error
1161 checking, and its normal behavior can be forced by using the **-i** flag or
1162 **--interactive** option.
1163
1164 # INTERACTIVE MODE
1165
1166 Like bc(1), dc(1) has an interactive mode and a non-interactive mode.
1167 Interactive mode is turned on automatically when both **stdin** and **stdout**
1168 are hooked to a terminal, but the **-i** flag and **--interactive** option can
1169 turn it on in other cases.
1170
1171 In interactive mode, dc(1) attempts to recover from errors (see the **RESET**
1172 section), and in normal execution, flushes **stdout** as soon as execution is
1173 done for the current input.
1174
1175 # TTY MODE
1176
1177 If **stdin**, **stdout**, and **stderr** are all connected to a TTY, dc(1) turns
1178 on "TTY mode."
1179
1180 {{ A E N P EN EP NP ENP }}
1181 TTY mode is required for history to be enabled (see the **COMMAND LINE HISTORY**
1182 section). It is also required to enable special handling for **SIGINT** signals.
1183 {{ end }}
1184
1185 {{ A E H N EH EN HN EHN }}
1186 The prompt is enabled in TTY mode.
1187 {{ end }}
1188
1189 TTY mode is different from interactive mode because interactive mode is required
1190 in the [bc(1) specification][1], and interactive mode requires only **stdin**
1191 and **stdout** to be connected to a terminal.
1192
1193 # SIGNAL HANDLING
1194
1195 Sending a **SIGINT** will cause dc(1) to stop execution of the current input. If
1196 dc(1) is in TTY mode (see the **TTY MODE** section), it will reset (see the
1197 **RESET** section). Otherwise, it will clean up and exit.
1198
1199 Note that "current input" can mean one of two things. If dc(1) is processing
1200 input from **stdin** in TTY mode, it will ask for more input. If dc(1) is
1201 processing input from a file in TTY mode, it will stop processing the file and
1202 start processing the next file, if one exists, or ask for input from **stdin**
1203 if no other file exists.
1204
1205 This means that if a **SIGINT** is sent to dc(1) as it is executing a file, it
1206 can seem as though dc(1) did not respond to the signal since it will immediately
1207 start executing the next file. This is by design; most files that users execute
1208 when interacting with dc(1) have function definitions, which are quick to parse.
1209 If a file takes a long time to execute, there may be a bug in that file. The
1210 rest of the files could still be executed without problem, allowing the user to
1211 continue.
1212
1213 **SIGTERM** and **SIGQUIT** cause dc(1) to clean up and exit, and it uses the
1214 {{ A E N P EN EP NP ENP }}
1215 default handler for all other signals. The one exception is **SIGHUP**; in that
1216 case, when dc(1) is in TTY mode, a **SIGHUP** will cause dc(1) to clean up and
1217 exit.
1218 {{ end }}
1219 {{ H EH HN HP EHN EHP HNP EHNP }}
1220 default handler for all other signals.
1221 {{ end }}
1222
1223 {{ A E N P EN EP NP ENP }}
1224 # COMMAND LINE HISTORY
1225
1226 dc(1) supports interactive command-line editing. If dc(1) is in TTY mode (see
1227 the **TTY MODE** section), history is enabled. Previous lines can be recalled
1228 and edited with the arrow keys.
1229
1230 **Note**: tabs are converted to 8 spaces.
1231 {{ end }}
1232
1233 {{ A E H P EH EP HP EHP }}
1234 # LOCALES
1235
1236 This dc(1) ships with support for adding error messages for different locales
1237 and thus, supports **LC_MESSAGS**.
1238 {{ end }}
1239
1240 # SEE ALSO
1241
1242 bc(1)
1243
1244 # STANDARDS
1245
1246 The dc(1) utility operators are compliant with the operators in the bc(1)
1247 [IEEE Std 1003.1-2017 (“POSIX.1-2017”)][1] specification.
1248
1249 # BUGS
1250
1251 None are known. Report bugs at https://git.yzena.com/gavin/bc.
1252
1253 # AUTHOR
1254
1255 Gavin D. Howard <yzena.tech@gmail.com> and contributors.
1256
1257 [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html