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