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