]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bc/manuals/bc.1.md.in
bc: Vendor import new version 3.3.3
[FreeBSD/FreeBSD.git] / contrib / bc / manuals / bc.1.md.in
1 <!---
2
3 SPDX-License-Identifier: BSD-2-Clause
4
5 Copyright (c) 2018-2021 Gavin D. Howard and contributors.
6
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
9
10 * Redistributions of source code must retain the above copyright notice, this
11   list of conditions and the following disclaimer.
12
13 * Redistributions in binary form must reproduce the above copyright notice,
14   this list of conditions and the following disclaimer in the documentation
15   and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 POSSIBILITY OF SUCH DAMAGE.
28
29 -->
30
31 # NAME
32
33 bc - arbitrary-precision decimal arithmetic language and calculator
34
35 # SYNOPSIS
36
37 **bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
38
39 # DESCRIPTION
40
41 bc(1) is an interactive processor for a language first standardized in 1991 by
42 POSIX. (The current standard is [here][1].) The language provides unlimited
43 precision decimal arithmetic and is somewhat C-like, but there are differences.
44 Such differences will be noted in this document.
45
46 After parsing and handling options, this bc(1) reads any files given on the
47 command line and executes them before reading from **stdin**.
48
49 {{ A N P NP }}
50 This bc(1) is a drop-in replacement for *any* bc(1), including (and
51 especially) the GNU bc(1). It also has many extensions and extra features beyond
52 other implementations.
53 {{ end }}
54 {{ E EN EP ENP }}
55 This bc(1) is a drop-in replacement for *any* bc(1), including (and
56 especially) the GNU bc(1).
57 {{ end }}
58
59 # OPTIONS
60
61 The following are the options that bc(1) accepts.
62
63 **-g**, **-\-global-stacks**
64
65 {{ A H N P HN HP NP HNP }}
66 :   Turns the globals **ibase**, **obase**, **scale**, and **seed** into stacks.
67
68     This has the effect that a copy of the current value of all four are pushed
69 {{ end }}
70 {{ E EH EN EP EHN EHP ENP EHNP }}
71     Turns the globals **ibase**, **obase**, and **scale** into stacks.
72
73     This has the effect that a copy of the current value of all three are pushed
74 {{ end }}
75     onto a stack for every function call, as well as popped when every function
76     returns. This means that functions can assign to any and all of those
77     globals without worrying that the change will affect other functions.
78     Thus, a hypothetical function named **output(x,b)** that simply printed
79     **x** in base **b** could be written like this:
80
81         define void output(x, b) {
82             obase=b
83             x
84         }
85
86     instead of like this:
87
88         define void output(x, b) {
89             auto c
90             c=obase
91             obase=b
92             x
93             obase=c
94         }
95
96     This makes writing functions much easier.
97
98 {{ A H N P HN HP NP HNP }}
99     (**Note**: the function **output(x,b)** exists in the extended math library.
100      See the **LIBRARY** section.)
101
102     However, since using this flag means that functions cannot set **ibase**,
103     **obase**, **scale**, or **seed** globally, functions that are made to do so
104     cannot work anymore. There are two possible use cases for that, and each has
105     a solution.
106 {{ end }}
107 {{ E EH EN EP EHN EHP ENP EHNP }}
108     However, since using this flag means that functions cannot set **ibase**,
109     **obase**, or **scale** globally, functions that are made to do so cannot
110     work anymore. There are two possible use cases for that, and each has a
111     solution.
112 {{ end }}
113
114     First, if a function is called on startup to turn bc(1) into a number
115     converter, it is possible to replace that capability with various shell
116     aliases. Examples:
117
118         alias d2o="bc -e ibase=A -e obase=8"
119         alias h2b="bc -e ibase=G -e obase=2"
120
121 {{ A H N P HN HP NP HNP }}
122     Second, if the purpose of a function is to set **ibase**, **obase**,
123     **scale**, or **seed** globally for any other purpose, it could be split
124     into one to four functions (based on how many globals it sets) and each of
125     those functions could return the desired value for a global.
126
127     For functions that set **seed**, the value assigned to **seed** is not
128     propagated to parent functions. This means that the sequence of
129     pseudo-random numbers that they see will not be the same sequence of
130     pseudo-random numbers that any parent sees. This is only the case once
131     **seed** has been set.
132
133     If a function desires to not affect the sequence of pseudo-random numbers
134     of its parents, but wants to use the same **seed**, it can use the following
135     line:
136
137         seed = seed
138 {{ end }}
139 {{ E EH EN EP EHN EHP ENP EHNP }}
140     Second, if the purpose of a function is to set **ibase**, **obase**, or
141     **scale** globally for any other purpose, it could be split into one to
142     three functions (based on how many globals it sets) and each of those
143     functions could return the desired value for a global.
144 {{ end }}
145
146     If the behavior of this option is desired for every run of bc(1), then users
147     could make sure to define **BC_ENV_ARGS** and include this option (see the
148     **ENVIRONMENT VARIABLES** section for more details).
149
150     If **-s**, **-w**, or any equivalents are used, this option is ignored.
151
152     This is a **non-portable extension**.
153
154 **-h**, **-\-help**
155
156 :   Prints a usage message and quits.
157
158 **-i**, **-\-interactive**
159
160 :   Forces interactive mode. (See the **INTERACTIVE MODE** section.)
161
162     This is a **non-portable extension**.
163
164 **-l**, **-\-mathlib**
165
166 :   Sets **scale** (see the **SYNTAX** section) to **20** and loads the included
167 {{ A H N P HN HP NP HNP }}
168     math library and the extended math library before running any code,
169     including any expressions or files specified on the command line.
170
171     To learn what is in the libraries, see the **LIBRARY** section.
172 {{ end }}
173 {{ E EH EN EP EHN EHP ENP EHNP }}
174     math library before running any code, including any expressions or files
175     specified on the command line.
176
177     To learn what is in the library, see the **LIBRARY** section.
178 {{ end }}
179
180 **-P**, **-\-no-prompt**
181
182 {{ A E H N EH EN HN EHN }}
183 :   Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
184     See the **TTY MODE** section) This is mostly for those users that do not
185     want a prompt or are not used to having them in bc(1). Most of those users
186     would want to put this option in **BC_ENV_ARGS** (see the
187     **ENVIRONMENT VARIABLES** section).
188 {{ end }}
189 {{ P EP HP NP EHP ENP HNP EHNP }}
190 :   This option is a no-op.
191 {{ end }}
192
193     This is a **non-portable extension**.
194
195 **-q**, **-\-quiet**
196
197 :   This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
198     Without this option, GNU bc(1) prints a copyright header. This bc(1) only
199     prints the copyright header if one or more of the **-v**, **-V**, or
200     **-\-version** options are given.
201
202     This is a **non-portable extension**.
203
204 **-s**, **-\-standard**
205
206 :   Process exactly the language defined by the [standard][1] and error if any
207     extensions are used.
208
209     This is a **non-portable extension**.
210
211 **-v**, **-V**, **-\-version**
212
213 :   Print the version information (copyright header) and exit.
214
215     This is a **non-portable extension**.
216
217 **-w**, **-\-warn**
218
219 :   Like **-s** and **-\-standard**, except that warnings (and not errors) are
220     printed for non-standard extensions and execution continues normally.
221
222     This is a **non-portable extension**.
223
224 **-e** *expr*, **-\-expression**=*expr*
225
226 :   Evaluates *expr*. If multiple expressions are given, they are evaluated in
227     order. If files are given as well (see below), the expressions and files are
228     evaluated in the order given. This means that if a file is given before an
229     expression, the file is read in and evaluated first.
230
231     If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
232     see the **ENVIRONMENT VARIABLES** section), then after processing all
233     expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
234     as an argument at least once to **-f** or **-\-file**, whether on the
235     command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
236     **-\-expression**, **-f**, or **-\-file** arguments are given after **-f-**
237     or equivalent is given, bc(1) will give a fatal error and exit.
238
239     This is a **non-portable extension**.
240
241 **-f** *file*, **-\-file**=*file*
242
243 :   Reads in *file* and evaluates it, line by line, as though it were read
244     through **stdin**. If expressions are also given (see above), the
245     expressions are evaluated in the order given.
246
247     If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
248     see the **ENVIRONMENT VARIABLES** section), then after processing all
249     expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
250     as an argument at least once to **-f** or **-\-file**. However, if any other
251     **-e**, **-\-expression**, **-f**, or **-\-file** arguments are given after
252     **-f-** or equivalent is given, bc(1) will give a fatal error and exit.
253
254     This is a **non-portable extension**.
255
256 All long options are **non-portable extensions**.
257
258 # STDOUT
259
260 Any non-error output is written to **stdout**. In addition, if history (see the
261 **HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
262 both are output to **stdout**.
263
264 **Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
265 error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
266 **stdout** is closed, as in **bc <file> >&-**, it will quit with an error. This
267 is done so that bc(1) can report problems when **stdout** is redirected to a
268 file.
269
270 If there are scripts that depend on the behavior of other bc(1) implementations,
271 it is recommended that those scripts be changed to redirect **stdout** to
272 **/dev/null**.
273
274 # STDERR
275
276 Any error output is written to **stderr**.
277
278 **Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
279 error (see the **EXIT STATUS** section) if it cannot write to **stderr**, so if
280 **stderr** is closed, as in **bc <file> 2>&-**, it will quit with an error. This
281 is done so that bc(1) can exit with an error code when **stderr** is redirected
282 to a file.
283
284 If there are scripts that depend on the behavior of other bc(1) implementations,
285 it is recommended that those scripts be changed to redirect **stderr** to
286 **/dev/null**.
287
288 # SYNTAX
289
290 The syntax for bc(1) programs is mostly C-like, with some differences. This
291 bc(1) follows the [POSIX standard][1], which is a much more thorough resource
292 for the language this bc(1) accepts. This section is meant to be a summary and a
293 listing of all the extensions to the standard.
294
295 In the sections below, **E** means expression, **S** means statement, and **I**
296 means identifier.
297
298 Identifiers (**I**) start with a lowercase letter and can be followed by any
299 number (up to **BC_NAME_MAX-1**) of lowercase letters (**a-z**), digits
300 (**0-9**), and underscores (**\_**). The regex is **\[a-z\]\[a-z0-9\_\]\***.
301 Identifiers with more than one character (letter) are a
302 **non-portable extension**.
303
304 **ibase** is a global variable determining how to interpret constant numbers. It
305 is the "input" base, or the number base used for interpreting input numbers.
306 **ibase** is initially **10**. If the **-s** (**-\-standard**) and **-w**
307 (**-\-warn**) flags were not given on the command line, the max allowable value
308 for **ibase** is **36**. Otherwise, it is **16**. The min allowable value for
309 **ibase** is **2**. The max allowable value for **ibase** can be queried in
310 bc(1) programs with the **maxibase()** built-in function.
311
312 **obase** is a global variable determining how to output results. It is the
313 "output" base, or the number base used for outputting numbers. **obase** is
314 initially **10**. The max allowable value for **obase** is **BC_BASE_MAX** and
315 can be queried in bc(1) programs with the **maxobase()** built-in function. The
316 {{ A H N P HN HP NP HNP }}
317 min allowable value for **obase** is **0**. If **obase** is **0**, values are
318 output in scientific notation, and if **obase** is **1**, values are output in
319 engineering notation. Otherwise, values are output in the specified base.
320
321 Outputting in scientific and engineering notations are **non-portable
322 extensions**.
323 {{ end }}
324 {{ E EH EN EP EHN EHP ENP EHNP }}
325 min allowable value for **obase** is **2**. Values are output in the specified
326 base.
327 {{ end }}
328
329 The *scale* of an expression is the number of digits in the result of the
330 expression right of the decimal point, and **scale** is a global variable that
331 sets the precision of any operations, with exceptions. **scale** is initially
332 **0**. **scale** cannot be negative. The max allowable value for **scale** is
333 **BC_SCALE_MAX** and can be queried in bc(1) programs with the **maxscale()**
334 built-in function.
335
336 bc(1) has both *global* variables and *local* variables. All *local*
337 variables are local to the function; they are parameters or are introduced in
338 the **auto** list of a function (see the **FUNCTIONS** section). If a variable
339 is accessed which is not a parameter or in the **auto** list, it is assumed to
340 be *global*. If a parent function has a *local* variable version of a variable
341 that a child function considers *global*, the value of that *global* variable in
342 the child function is the value of the variable in the parent function, not the
343 value of the actual *global* variable.
344
345 All of the above applies to arrays as well.
346
347 The value of a statement that is an expression (i.e., any of the named
348 expressions or operands) is printed unless the lowest precedence operator is an
349 assignment operator *and* the expression is notsurrounded by parentheses.
350
351 The value that is printed is also assigned to the special variable **last**. A
352 single dot (**.**) may also be used as a synonym for **last**. These are
353 **non-portable extensions**.
354
355 Either semicolons or newlines may separate statements.
356
357 ## Comments
358
359 There are two kinds of comments:
360
361 1.      Block comments are enclosed in **/\*** and **\*/**.
362 2.      Line comments go from **#** until, and not including, the next newline. This
363         is a **non-portable extension**.
364
365 ## Named Expressions
366
367 The following are named expressions in bc(1):
368
369 1.      Variables: **I**
370 2.      Array Elements: **I[E]**
371 3.      **ibase**
372 4.      **obase**
373 5.      **scale**
374 {{ A H N P HN HP NP HNP }}
375 6.      **seed**
376 7.      **last** or a single dot (**.**)
377
378 Numbers 6 and 7 are **non-portable extensions**.
379
380 The meaning of **seed** is dependent on the current pseudo-random number
381 generator but is guaranteed to not change except for new major versions.
382
383 The *scale* and sign of the value may be significant.
384
385 If a previously used **seed** value is assigned to **seed** and used again, the
386 pseudo-random number generator is guaranteed to produce the same sequence of
387 pseudo-random numbers as it did when the **seed** value was previously used.
388
389 The exact value assigned to **seed** is not guaranteed to be returned if
390 **seed** is queried again immediately. However, if **seed** *does* return a
391 different value, both values, when assigned to **seed**, are guaranteed to
392 produce the same sequence of pseudo-random numbers. This means that certain
393 values assigned to **seed** will *not* produce unique sequences of pseudo-random
394 numbers. The value of **seed** will change after any use of the **rand()** and
395 **irand(E)** operands (see the *Operands* subsection below), except if the
396 parameter passed to **irand(E)** is **0**, **1**, or negative.
397
398 There is no limit to the length (number of significant decimal digits) or
399 *scale* of the value that can be assigned to **seed**.
400 {{ end }}
401 {{ E EH EN EP EHN EHP ENP EHNP }}
402 6.      **last** or a single dot (**.**)
403
404 Number 6 is a **non-portable extension**.
405 {{ end }}
406
407 Variables and arrays do not interfere; users can have arrays named the same as
408 variables. This also applies to functions (see the **FUNCTIONS** section), so a
409 user can have a variable, array, and function that all have the same name, and
410 they will not shadow each other, whether inside of functions or not.
411
412 Named expressions are required as the operand of **increment**/**decrement**
413 operators  and as the left side of **assignment** operators (see the *Operators*
414 subsection).
415
416 ## Operands
417
418 The following are valid operands in bc(1):
419
420 1.      Numbers (see the *Numbers* subsection below).
421 2.      Array indices (**I[E]**).
422 3.      **(E)**: The value of **E** (used to change precedence).
423 4.      **sqrt(E)**: The square root of **E**. **E** must be non-negative.
424 5.      **length(E)**: The number of significant decimal digits in **E**.
425 6.      **length(I[])**: The number of elements in the array **I**. This is a
426         **non-portable extension**.
427 7.      **scale(E)**: The *scale* of **E**.
428 8.      **abs(E)**: The absolute value of **E**. This is a **non-portable
429         extension**.
430 9.      **I()**, **I(E)**, **I(E, E)**, and so on, where **I** is an identifier for
431         a non-**void** function (see the *Void Functions* subsection of the
432         **FUNCTIONS** section). The **E** argument(s) may also be arrays of the form
433         **I[]**, which will automatically be turned into array references (see the
434         *Array References* subsection of the **FUNCTIONS** section) if the
435         corresponding parameter in the function definition is an array reference.
436 10.     **read()**: Reads a line from **stdin** and uses that as an expression. The
437         result of that expression is the result of the **read()** operand. This is a
438         **non-portable extension**.
439 11.     **maxibase()**: The max allowable **ibase**. This is a **non-portable
440         extension**.
441 12.     **maxobase()**: The max allowable **obase**. This is a **non-portable
442         extension**.
443 13.     **maxscale()**: The max allowable **scale**. This is a **non-portable
444         extension**.
445 {{ A H N P HN HP NP HNP }}
446 14.     **rand()**: A pseudo-random integer between **0** (inclusive) and
447         **BC_RAND_MAX** (inclusive). Using this operand will change the value of
448         **seed**. This is a **non-portable extension**.
449 15.     **irand(E)**: A pseudo-random integer between **0** (inclusive) and the
450         value of **E** (exclusive). If **E** is negative or is a non-integer
451         (**E**'s *scale* is not **0**), an error is raised, and bc(1) resets (see
452         the **RESET** section) while **seed** remains unchanged. If **E** is larger
453         than **BC_RAND_MAX**, the higher bound is honored by generating several
454         pseudo-random integers, multiplying them by appropriate powers of
455         **BC_RAND_MAX+1**, and adding them together. Thus, the size of integer that
456         can be generated with this operand is unbounded. Using this operand will
457         change the value of **seed**, unless the value of **E** is **0** or **1**.
458         In that case, **0** is returned, and **seed** is *not* changed. This is a
459         **non-portable extension**.
460 16.     **maxrand()**: The max integer returned by **rand()**. This is a
461         **non-portable extension**.
462
463 The integers generated by **rand()** and **irand(E)** are guaranteed to be as
464 unbiased as possible, subject to the limitations of the pseudo-random number
465 generator.
466
467 **Note**: The values returned by the pseudo-random number generator with
468 **rand()** and **irand(E)** are guaranteed to *NOT* be cryptographically secure.
469 This is a consequence of using a seeded pseudo-random number generator. However,
470 they *are* guaranteed to be reproducible with identical **seed** values. This
471 means that the pseudo-random values from bc(1) should only be used where a
472 reproducible stream of pseudo-random numbers is *ESSENTIAL*. In any other case,
473 use a non-seeded pseudo-random number generator.
474 {{ end }}
475
476 ## Numbers
477
478 Numbers are strings made up of digits, uppercase letters, and at most **1**
479 period for a radix. Numbers can have up to **BC_NUM_MAX** digits. Uppercase
480 letters are equal to **9** + their position in the alphabet (i.e., **A** equals
481 **10**, or **9+1**). If a digit or letter makes no sense with the current value
482 of **ibase**, they are set to the value of the highest valid digit in **ibase**.
483
484 Single-character numbers (i.e., **A** alone) take the value that they would have
485 if they were valid digits, regardless of the value of **ibase**. This means that
486 **A** alone always equals decimal **10** and **Z** alone always equals decimal
487 **35**.
488
489 {{ A H N P HN HP NP HNP }}
490 In addition, bc(1) accepts numbers in scientific notation. These have the form
491 **\<number\>e\<integer\>**. The exponent (the portion after the **e**) must be
492 an integer. An example is **1.89237e9**, which is equal to **1892370000**.
493 Negative exponents are also allowed, so **4.2890e-3** is equal to **0.0042890**.
494
495 Using scientific notation is an error or warning if the **-s** or **-w**,
496 respectively, command-line options (or equivalents) are given.
497
498 **WARNING**: Both the number and the exponent in scientific notation are
499 interpreted according to the current **ibase**, but the number is still
500 multiplied by **10\^exponent** regardless of the current **ibase**. For example,
501 if **ibase** is **16** and bc(1) is given the number string **FFeA**, the
502 resulting decimal number will be **2550000000000**, and if bc(1) is given the
503 number string **10e-4**, the resulting decimal number will be **0.0016**.
504
505 Accepting input as scientific notation is a **non-portable extension**.
506 {{ end }}
507
508 ## Operators
509
510 The following arithmetic and logical operators can be used. They are listed in
511 order of decreasing precedence. Operators in the same group have the same
512 precedence.
513
514 **++** **-\-**
515
516 :   Type: Prefix and Postfix
517
518     Associativity: None
519
520     Description: **increment**, **decrement**
521
522 **-** **!**
523
524 :   Type: Prefix
525
526     Associativity: None
527
528     Description: **negation**, **boolean not**
529
530 {{ A H N P HN HP NP HNP }}
531 **\$**
532
533 :   Type: Postfix
534
535     Associativity: None
536
537     Description: **truncation**
538
539 **\@**
540
541 :   Type: Binary
542
543     Associativity: Right
544
545     Description: **set precision**
546 {{ end }}
547
548 **\^**
549
550 :   Type: Binary
551
552     Associativity: Right
553
554     Description: **power**
555
556 **\*** **/** **%**
557
558 :   Type: Binary
559
560     Associativity: Left
561
562     Description: **multiply**, **divide**, **modulus**
563
564 **+** **-**
565
566 :   Type: Binary
567
568     Associativity: Left
569
570     Description: **add**, **subtract**
571
572 {{ A H N P HN HP NP HNP }}
573 **\<\<** **\>\>**
574
575 :   Type: Binary
576
577     Associativity: Left
578
579     Description: **shift left**, **shift right**
580
581 **=** **\<\<=** **\>\>=** **+=** **-=** **\*=** **/=** **%=** **\^=** **\@=**
582 {{ end }}
583 {{ E EH EN EP EHN EHP ENP EHNP }}
584 **=** **+=** **-=** **\*=** **/=** **%=** **\^=**
585 {{ end }}
586
587 :   Type: Binary
588
589     Associativity: Right
590
591     Description: **assignment**
592
593 **==** **\<=** **\>=** **!=** **\<** **\>**
594
595 :   Type: Binary
596
597     Associativity: Left
598
599     Description: **relational**
600
601 **&&**
602
603 :   Type: Binary
604
605     Associativity: Left
606
607     Description: **boolean and**
608
609 **||**
610
611 :   Type: Binary
612
613     Associativity: Left
614
615     Description: **boolean or**
616
617 The operators will be described in more detail below.
618
619 **++** **-\-**
620
621 :   The prefix and postfix **increment** and **decrement** operators behave
622     exactly like they would in C. They require a named expression (see the
623     *Named Expressions* subsection) as an operand.
624
625     The prefix versions of these operators are more efficient; use them where
626     possible.
627
628 **-**
629
630 :   The **negation** operator returns **0** if a user attempts to negate any
631     expression with the value **0**. Otherwise, a copy of the expression with
632     its sign flipped is returned.
633
634 **!**
635
636 :   The **boolean not** operator returns **1** if the expression is **0**, or
637     **0** otherwise.
638
639     This is a **non-portable extension**.
640
641 {{ A H N P HN HP NP HNP }}
642 **\$**
643
644 :   The **truncation** operator returns a copy of the given expression with all
645     of its *scale* removed.
646
647     This is a **non-portable extension**.
648
649 **\@**
650
651 :   The **set precision** operator takes two expressions and returns a copy of
652     the first with its *scale* equal to the value of the second expression. That
653     could either mean that the number is returned without change (if the
654     *scale* of the first expression matches the value of the second
655     expression), extended (if it is less), or truncated (if it is more).
656
657     The second expression must be an integer (no *scale*) and non-negative.
658
659     This is a **non-portable extension**.
660 {{ end }}
661
662 **\^**
663
664 :   The **power** operator (not the **exclusive or** operator, as it would be in
665     C) takes two expressions and raises the first to the power of the value of
666     the second. The *scale* of the result is equal to **scale**.
667
668     The second expression must be an integer (no *scale*), and if it is
669     negative, the first value must be non-zero.
670
671 **\***
672
673 :   The **multiply** operator takes two expressions, multiplies them, and
674     returns the product. If **a** is the *scale* of the first expression and
675     **b** is the *scale* of the second expression, the *scale* of the result is
676     equal to **min(a+b,max(scale,a,b))** where **min()** and **max()** return
677     the obvious values.
678
679 **/**
680
681 :   The **divide** operator takes two expressions, divides them, and returns the
682     quotient. The *scale* of the result shall be the value of **scale**.
683
684     The second expression must be non-zero.
685
686 **%**
687
688 :   The **modulus** operator takes two expressions, **a** and **b**, and
689     evaluates them by 1) Computing **a/b** to current **scale** and 2) Using the
690     result of step 1 to calculate **a-(a/b)\*b** to *scale*
691     **max(scale+scale(b),scale(a))**.
692
693     The second expression must be non-zero.
694
695 **+**
696
697 :   The **add** operator takes two expressions, **a** and **b**, and returns the
698     sum, with a *scale* equal to the max of the *scale*s of **a** and **b**.
699
700 **-**
701
702 :   The **subtract** operator takes two expressions, **a** and **b**, and
703     returns the difference, with a *scale* equal to the max of the *scale*s of
704     **a** and **b**.
705
706 {{ A H N P HN HP NP HNP }}
707 **\<\<**
708
709 :   The **left shift** operator takes two expressions, **a** and **b**, and
710     returns a copy of the value of **a** with its decimal point moved **b**
711     places to the right.
712
713     The second expression must be an integer (no *scale*) and non-negative.
714
715     This is a **non-portable extension**.
716
717 **\>\>**
718
719 :   The **right shift** operator takes two expressions, **a** and **b**, and
720     returns a copy of the value of **a** with its decimal point moved **b**
721     places to the left.
722
723     The second expression must be an integer (no *scale*) and non-negative.
724
725     This is a **non-portable extension**.
726 {{ end }}
727
728 {{ A H N P HN HP NP HNP }}
729 **=** **\<\<=** **\>\>=** **+=** **-=** **\*=** **/=** **%=** **\^=** **\@=**
730 {{ end }}
731 {{ E EH EN EP EHN EHP ENP EHNP }}
732 **=** **+=** **-=** **\*=** **/=** **%=** **\^=**
733 {{ end }}
734
735 :   The **assignment** operators take two expressions, **a** and **b** where
736     **a** is a named expression (see the *Named Expressions* subsection).
737
738     For **=**, **b** is copied and the result is assigned to **a**. For all
739     others, **a** and **b** are applied as operands to the corresponding
740     arithmetic operator and the result is assigned to **a**.
741
742 {{ A H N P HN HP NP HNP }}
743     The **assignment** operators that correspond to operators that are
744     extensions are themselves **non-portable extensions**.
745 {{ end }}
746
747 **==** **\<=** **\>=** **!=** **\<** **\>**
748
749 :   The **relational** operators compare two expressions, **a** and **b**, and
750     if the relation holds, according to C language semantics, the result is
751     **1**. Otherwise, it is **0**.
752
753     Note that unlike in C, these operators have a lower precedence than the
754     **assignment** operators, which means that **a=b\>c** is interpreted as
755     **(a=b)\>c**.
756
757     Also, unlike the [standard][1] requires, these operators can appear anywhere
758     any other expressions can be used. This allowance is a
759     **non-portable extension**.
760
761 **&&**
762
763 :   The **boolean and** operator takes two expressions and returns **1** if both
764     expressions are non-zero, **0** otherwise.
765
766     This is *not* a short-circuit operator.
767
768     This is a **non-portable extension**.
769
770 **||**
771
772 :   The **boolean or** operator takes two expressions and returns **1** if one
773     of the expressions is non-zero, **0** otherwise.
774
775     This is *not* a short-circuit operator.
776
777     This is a **non-portable extension**.
778
779 ## Statements
780
781 The following items are statements:
782
783 1.      **E**
784 2.      **{** **S** **;** ... **;** **S** **}**
785 3.      **if** **(** **E** **)** **S**
786 4.      **if** **(** **E** **)** **S** **else** **S**
787 5.      **while** **(** **E** **)** **S**
788 6.      **for** **(** **E** **;** **E** **;** **E** **)** **S**
789 7.      An empty statement
790 8.      **break**
791 9.      **continue**
792 10.     **quit**
793 11.     **halt**
794 12.     **limits**
795 13.     A string of characters, enclosed in double quotes
796 14.     **print** **E** **,** ... **,** **E**
797 15.     **I()**, **I(E)**, **I(E, E)**, and so on, where **I** is an identifier for
798         a **void** function (see the *Void Functions* subsection of the
799         **FUNCTIONS** section). The **E** argument(s) may also be arrays of the form
800         **I[]**, which will automatically be turned into array references (see the
801         *Array References* subsection of the **FUNCTIONS** section) if the
802         corresponding parameter in the function definition is an array reference.
803
804 Numbers 4, 9, 11, 12, 14, and 15 are **non-portable extensions**.
805
806 Also, as a **non-portable extension**, any or all of the expressions in the
807 header of a for loop may be omitted. If the condition (second expression) is
808 omitted, it is assumed to be a constant **1**.
809
810 The **break** statement causes a loop to stop iterating and resume execution
811 immediately following a loop. This is only allowed in loops.
812
813 The **continue** statement causes a loop iteration to stop early and returns to
814 the start of the loop, including testing the loop condition. This is only
815 allowed in loops.
816
817 The **if** **else** statement does the same thing as in C.
818
819 The **quit** statement causes bc(1) to quit, even if it is on a branch that will
820 not be executed (it is a compile-time command).
821
822 The **halt** statement causes bc(1) to quit, if it is executed. (Unlike **quit**
823 if it is on a branch of an **if** statement that is not executed, bc(1) does not
824 quit.)
825
826 The **limits** statement prints the limits that this bc(1) is subject to. This
827 is like the **quit** statement in that it is a compile-time command.
828
829 An expression by itself is evaluated and printed, followed by a newline.
830
831 {{ A H N P HN HP NP HNP }}
832 Both scientific notation and engineering notation are available for printing the
833 results of expressions. Scientific notation is activated by assigning **0** to
834 **obase**, and engineering notation is activated by assigning **1** to
835 **obase**. To deactivate them, just assign a different value to **obase**.
836
837 Scientific notation and engineering notation are disabled if bc(1) is run with
838 either the **-s** or **-w** command-line options (or equivalents).
839
840 Printing numbers in scientific notation and/or engineering notation is a
841 **non-portable extension**.
842 {{ end }}
843
844 ## Print Statement
845
846 The "expressions" in a **print** statement may also be strings. If they are, there
847 are backslash escape sequences that are interpreted specially. What those
848 sequences are, and what they cause to be printed, are shown below:
849
850 -------- -------
851 **\\a**  **\\a**
852 **\\b**  **\\b**
853 **\\\\** **\\**
854 **\\e**  **\\**
855 **\\f**  **\\f**
856 **\\n**  **\\n**
857 **\\q**  **"**
858 **\\r**  **\\r**
859 **\\t**  **\\t**
860 -------- -------
861
862 Any other character following a backslash causes the backslash and character to
863 be printed as-is.
864
865 Any non-string expression in a print statement shall be assigned to **last**,
866 like any other expression that is printed.
867
868 ## Order of Evaluation
869
870 All expressions in a statment are evaluated left to right, except as necessary
871 to maintain order of operations. This means, for example, assuming that **i** is
872 equal to **0**, in the expression
873
874     a[i++] = i++
875
876 the first (or 0th) element of **a** is set to **1**, and **i** is equal to **2**
877 at the end of the expression.
878
879 This includes function arguments. Thus, assuming **i** is equal to **0**, this
880 means that in the expression
881
882     x(i++, i++)
883
884 the first argument passed to **x()** is **0**, and the second argument is **1**,
885 while **i** is equal to **2** before the function starts executing.
886
887 # FUNCTIONS
888
889 Function definitions are as follows:
890
891 ```
892 define I(I,...,I){
893         auto I,...,I
894         S;...;S
895         return(E)
896 }
897 ```
898
899 Any **I** in the parameter list or **auto** list may be replaced with **I[]** to
900 make a parameter or **auto** var an array, and any **I** in the parameter list
901 may be replaced with **\*I[]** to make a parameter an array reference. Callers
902 of functions that take array references should not put an asterisk in the call;
903 they must be called with just **I[]** like normal array parameters and will be
904 automatically converted into references.
905
906 As a **non-portable extension**, the opening brace of a **define** statement may
907 appear on the next line.
908
909 As a **non-portable extension**, the return statement may also be in one of the
910 following forms:
911
912 1.      **return**
913 2.      **return** **(** **)**
914 3.      **return** **E**
915
916 The first two, or not specifying a **return** statement, is equivalent to
917 **return (0)**, unless the function is a **void** function (see the *Void
918 Functions* subsection below).
919
920 ## Void Functions
921
922 Functions can also be **void** functions, defined as follows:
923
924 ```
925 define void I(I,...,I){
926         auto I,...,I
927         S;...;S
928         return
929 }
930 ```
931
932 They can only be used as standalone expressions, where such an expression would
933 be printed alone, except in a print statement.
934
935 Void functions can only use the first two **return** statements listed above.
936 They can also omit the return statement entirely.
937
938 The word "void" is not treated as a keyword; it is still possible to have
939 variables, arrays, and functions named **void**. The word "void" is only
940 treated specially right after the **define** keyword.
941
942 This is a **non-portable extension**.
943
944 ## Array References
945
946 For any array in the parameter list, if the array is declared in the form
947
948 ```
949 *I[]
950 ```
951
952 it is a **reference**. Any changes to the array in the function are reflected,
953 when the function returns, to the array that was passed in.
954
955 Other than this, all function arguments are passed by value.
956
957 This is a **non-portable extension**.
958
959 # LIBRARY
960
961 {{ A H N P HN HP NP HNP }}
962 All of the functions below, including the functions in the extended math
963 library (see the *Extended Library* subsection below), are available when the
964 **-l** or **-\-mathlib** command-line flags are given, except that the extended
965 math library is not available when the **-s** option, the **-w** option, or
966 equivalents are given.
967 {{ end }}
968 {{ E EH EN EP EHN EHP ENP EHNP }}
969 All of the functions below  are available when the **-l** or **-\-mathlib**
970 command-line flags are given.
971 {{ end }}
972
973 ## Standard Library
974
975 The [standard][1] defines the following functions for the math library:
976
977 **s(x)**
978
979 :   Returns the sine of **x**, which is assumed to be in radians.
980
981     This is a transcendental function (see the *Transcendental Functions*
982     subsection below).
983
984 **c(x)**
985
986 :   Returns the cosine of **x**, which is assumed to be in radians.
987
988     This is a transcendental function (see the *Transcendental Functions*
989     subsection below).
990
991 **a(x)**
992
993 :   Returns the arctangent of **x**, in radians.
994
995     This is a transcendental function (see the *Transcendental Functions*
996     subsection below).
997
998 **l(x)**
999
1000 :   Returns the natural logarithm of **x**.
1001
1002     This is a transcendental function (see the *Transcendental Functions*
1003     subsection below).
1004
1005 **e(x)**
1006
1007 :   Returns the mathematical constant **e** raised to the power of **x**.
1008
1009     This is a transcendental function (see the *Transcendental Functions*
1010     subsection below).
1011
1012 **j(x, n)**
1013
1014 :   Returns the bessel integer order **n** (truncated) of **x**.
1015
1016     This is a transcendental function (see the *Transcendental Functions*
1017     subsection below).
1018
1019 {{ A H N P HN HP NP HNP }}
1020 ## Extended Library
1021
1022 The extended library is *not* loaded when the **-s**/**-\-standard** or
1023 **-w**/**-\-warn** options are given since they are not part of the library
1024 defined by the [standard][1].
1025
1026 The extended library is a **non-portable extension**.
1027
1028 **p(x, y)**
1029
1030 :   Calculates **x** to the power of **y**, even if **y** is not an integer, and
1031     returns the result to the current **scale**.
1032
1033     It is an error if **y** is negative and **x** is **0**.
1034
1035     This is a transcendental function (see the *Transcendental Functions*
1036     subsection below).
1037
1038 **r(x, p)**
1039
1040 :   Returns **x** rounded to **p** decimal places according to the rounding mode
1041     [round half away from **0**][3].
1042
1043 **ceil(x, p)**
1044
1045 :   Returns **x** rounded to **p** decimal places according to the rounding mode
1046     [round away from **0**][6].
1047
1048 **f(x)**
1049
1050 :   Returns the factorial of the truncated absolute value of **x**.
1051
1052 **perm(n, k)**
1053
1054 :   Returns the permutation of the truncated absolute value of **n** of the
1055     truncated absolute value of **k**, if **k \<= n**. If not, it returns **0**.
1056
1057 **comb(n, k)**
1058
1059 :   Returns the combination of the truncated absolute value of **n** of the
1060     truncated absolute value of **k**, if **k \<= n**. If not, it returns **0**.
1061
1062 **l2(x)**
1063
1064 :   Returns the logarithm base **2** of **x**.
1065
1066     This is a transcendental function (see the *Transcendental Functions*
1067     subsection below).
1068
1069 **l10(x)**
1070
1071 :   Returns the logarithm base **10** of **x**.
1072
1073     This is a transcendental function (see the *Transcendental Functions*
1074     subsection below).
1075
1076 **log(x, b)**
1077
1078 :   Returns the logarithm base **b** of **x**.
1079
1080     This is a transcendental function (see the *Transcendental Functions*
1081     subsection below).
1082
1083 **cbrt(x)**
1084
1085 :   Returns the cube root of **x**.
1086
1087 **root(x, n)**
1088
1089 :   Calculates the truncated value of **n**, **r**, and returns the **r**th root
1090     of **x** to the current **scale**.
1091
1092     If **r** is **0** or negative, this raises an error and causes bc(1) to
1093     reset (see the **RESET** section). It also raises an error and causes bc(1)
1094     to reset if **r** is even and **x** is negative.
1095
1096 **pi(p)**
1097
1098 :   Returns **pi** to **p** decimal places.
1099
1100     This is a transcendental function (see the *Transcendental Functions*
1101     subsection below).
1102
1103 **t(x)**
1104
1105 :   Returns the tangent of **x**, which is assumed to be in radians.
1106
1107     This is a transcendental function (see the *Transcendental Functions*
1108     subsection below).
1109
1110 **a2(y, x)**
1111
1112 :   Returns the arctangent of **y/x**, in radians. If both **y** and **x** are
1113     equal to **0**, it raises an error and causes bc(1) to reset (see the
1114     **RESET** section). Otherwise, if **x** is greater than **0**, it returns
1115     **a(y/x)**. If **x** is less than **0**, and **y** is greater than or equal
1116     to **0**, it returns **a(y/x)+pi**. If **x** is less than **0**, and **y**
1117     is less than **0**, it returns **a(y/x)-pi**. If **x** is equal to **0**,
1118     and **y** is greater than **0**, it returns **pi/2**. If **x** is equal to
1119     **0**, and **y** is less than **0**, it returns **-pi/2**.
1120
1121     This function is the same as the **atan2()** function in many programming
1122     languages.
1123
1124     This is a transcendental function (see the *Transcendental Functions*
1125     subsection below).
1126
1127 **sin(x)**
1128
1129 :   Returns the sine of **x**, which is assumed to be in radians.
1130
1131     This is an alias of **s(x)**.
1132
1133     This is a transcendental function (see the *Transcendental Functions*
1134     subsection below).
1135
1136 **cos(x)**
1137
1138 :   Returns the cosine of **x**, which is assumed to be in radians.
1139
1140     This is an alias of **c(x)**.
1141
1142     This is a transcendental function (see the *Transcendental Functions*
1143     subsection below).
1144
1145 **tan(x)**
1146
1147 :   Returns the tangent of **x**, which is assumed to be in radians.
1148
1149     If **x** is equal to **1** or **-1**, this raises an error and causes bc(1)
1150     to reset (see the **RESET** section).
1151
1152     This is an alias of **t(x)**.
1153
1154     This is a transcendental function (see the *Transcendental Functions*
1155     subsection below).
1156
1157 **atan(x)**
1158
1159 :   Returns the arctangent of **x**, in radians.
1160
1161     This is an alias of **a(x)**.
1162
1163     This is a transcendental function (see the *Transcendental Functions*
1164     subsection below).
1165
1166 **atan2(y, x)**
1167
1168 :   Returns the arctangent of **y/x**, in radians. If both **y** and **x** are
1169     equal to **0**, it raises an error and causes bc(1) to reset (see the
1170     **RESET** section). Otherwise, if **x** is greater than **0**, it returns
1171     **a(y/x)**. If **x** is less than **0**, and **y** is greater than or equal
1172     to **0**, it returns **a(y/x)+pi**. If **x** is less than **0**, and **y**
1173     is less than **0**, it returns **a(y/x)-pi**. If **x** is equal to **0**,
1174     and **y** is greater than **0**, it returns **pi/2**. If **x** is equal to
1175     **0**, and **y** is less than **0**, it returns **-pi/2**.
1176
1177     This function is the same as the **atan2()** function in many programming
1178     languages.
1179
1180     This is an alias of **a2(y, x)**.
1181
1182     This is a transcendental function (see the *Transcendental Functions*
1183     subsection below).
1184
1185 **r2d(x)**
1186
1187 :   Converts **x** from radians to degrees and returns the result.
1188
1189     This is a transcendental function (see the *Transcendental Functions*
1190     subsection below).
1191
1192 **d2r(x)**
1193
1194 :   Converts **x** from degrees to radians and returns the result.
1195
1196     This is a transcendental function (see the *Transcendental Functions*
1197     subsection below).
1198
1199 **frand(p)**
1200
1201 :   Generates a pseudo-random number between **0** (inclusive) and **1**
1202     (exclusive) with the number of decimal digits after the decimal point equal
1203     to the truncated absolute value of **p**. If **p** is not **0**, then
1204     calling this function will change the value of **seed**. If **p** is **0**,
1205     then **0** is returned, and **seed** is *not* changed.
1206
1207 **ifrand(i, p)**
1208
1209 :   Generates a pseudo-random number that is between **0** (inclusive) and the
1210     truncated absolute value of **i** (exclusive) with the number of decimal
1211     digits after the decimal point equal to the truncated absolute value of
1212     **p**. If the absolute value of **i** is greater than or equal to **2**, and
1213     **p** is not **0**, then calling this function will change the value of
1214     **seed**; otherwise, **0** is returned and **seed** is not changed.
1215
1216 **srand(x)**
1217
1218 :   Returns **x** with its sign flipped with probability **0.5**. In other
1219     words, it randomizes the sign of **x**.
1220
1221 **brand()**
1222
1223 :   Returns a random boolean value (either **0** or **1**).
1224
1225 **ubytes(x)**
1226
1227 :   Returns the numbers of unsigned integer bytes required to hold the truncated
1228     absolute value of **x**.
1229
1230 **sbytes(x)**
1231
1232 :   Returns the numbers of signed, two's-complement integer bytes required to
1233     hold the truncated value of **x**.
1234
1235 **hex(x)**
1236
1237 :   Outputs the hexadecimal (base **16**) representation of **x**.
1238
1239     This is a **void** function (see the *Void Functions* subsection of the
1240     **FUNCTIONS** section).
1241
1242 **binary(x)**
1243
1244 :   Outputs the binary (base **2**) representation of **x**.
1245
1246     This is a **void** function (see the *Void Functions* subsection of the
1247     **FUNCTIONS** section).
1248
1249 **output(x, b)**
1250
1251 :   Outputs the base **b** representation of **x**.
1252
1253     This is a **void** function (see the *Void Functions* subsection of the
1254     **FUNCTIONS** section).
1255
1256 **uint(x)**
1257
1258 :   Outputs the representation, in binary and hexadecimal, of **x** as an
1259     unsigned integer in as few power of two bytes as possible. Both outputs are
1260     split into bytes separated by spaces.
1261
1262     If **x** is not an integer or is negative, an error message is printed
1263     instead, but bc(1) is not reset (see the **RESET** section).
1264
1265     This is a **void** function (see the *Void Functions* subsection of the
1266     **FUNCTIONS** section).
1267
1268 **int(x)**
1269
1270 :   Outputs the representation, in binary and hexadecimal, of **x** as a signed,
1271     two's-complement integer in as few power of two bytes as possible. Both
1272     outputs are split into bytes separated by spaces.
1273
1274     If **x** is not an integer, an error message is printed instead, but bc(1)
1275     is not reset (see the **RESET** section).
1276
1277     This is a **void** function (see the *Void Functions* subsection of the
1278     **FUNCTIONS** section).
1279
1280 **uintn(x, n)**
1281
1282 :   Outputs the representation, in binary and hexadecimal, of **x** as an
1283     unsigned integer in **n** bytes. Both outputs are split into bytes separated
1284     by spaces.
1285
1286     If **x** is not an integer, is negative, or cannot fit into **n** bytes, an
1287     error message is printed instead, but bc(1) is not reset (see the **RESET**
1288     section).
1289
1290     This is a **void** function (see the *Void Functions* subsection of the
1291     **FUNCTIONS** section).
1292
1293 **intn(x, n)**
1294
1295 :   Outputs the representation, in binary and hexadecimal, of **x** as a signed,
1296     two's-complement integer in **n** bytes. Both outputs are split into bytes
1297     separated by spaces.
1298
1299     If **x** is not an integer or cannot fit into **n** bytes, an error message
1300     is printed instead, but bc(1) is not reset (see the **RESET** section).
1301
1302     This is a **void** function (see the *Void Functions* subsection of the
1303     **FUNCTIONS** section).
1304
1305 **uint8(x)**
1306
1307 :   Outputs the representation, in binary and hexadecimal, of **x** as an
1308     unsigned integer in **1** byte. Both outputs are split into bytes separated
1309     by spaces.
1310
1311     If **x** is not an integer, is negative, or cannot fit into **1** byte, an
1312     error message is printed instead, but bc(1) is not reset (see the **RESET**
1313     section).
1314
1315     This is a **void** function (see the *Void Functions* subsection of the
1316     **FUNCTIONS** section).
1317
1318 **int8(x)**
1319
1320 :   Outputs the representation, in binary and hexadecimal, of **x** as a signed,
1321     two's-complement integer in **1** byte. Both outputs are split into bytes
1322     separated by spaces.
1323
1324     If **x** is not an integer or cannot fit into **1** byte, an error message
1325     is printed instead, but bc(1) is not reset (see the **RESET** section).
1326
1327     This is a **void** function (see the *Void Functions* subsection of the
1328     **FUNCTIONS** section).
1329
1330 **uint16(x)**
1331
1332 :   Outputs the representation, in binary and hexadecimal, of **x** as an
1333     unsigned integer in **2** bytes. Both outputs are split into bytes separated
1334     by spaces.
1335
1336     If **x** is not an integer, is negative, or cannot fit into **2** bytes, an
1337     error message is printed instead, but bc(1) is not reset (see the **RESET**
1338     section).
1339
1340     This is a **void** function (see the *Void Functions* subsection of the
1341     **FUNCTIONS** section).
1342
1343 **int16(x)**
1344
1345 :   Outputs the representation, in binary and hexadecimal, of **x** as a signed,
1346     two's-complement integer in **2** bytes. Both outputs are split into bytes
1347     separated by spaces.
1348
1349     If **x** is not an integer or cannot fit into **2** bytes, an error message
1350     is printed instead, but bc(1) is not reset (see the **RESET** section).
1351
1352     This is a **void** function (see the *Void Functions* subsection of the
1353     **FUNCTIONS** section).
1354
1355 **uint32(x)**
1356
1357 :   Outputs the representation, in binary and hexadecimal, of **x** as an
1358     unsigned integer in **4** bytes. Both outputs are split into bytes separated
1359     by spaces.
1360
1361     If **x** is not an integer, is negative, or cannot fit into **4** bytes, an
1362     error message is printed instead, but bc(1) is not reset (see the **RESET**
1363     section).
1364
1365     This is a **void** function (see the *Void Functions* subsection of the
1366     **FUNCTIONS** section).
1367
1368 **int32(x)**
1369
1370 :   Outputs the representation, in binary and hexadecimal, of **x** as a signed,
1371     two's-complement integer in **4** bytes. Both outputs are split into bytes
1372     separated by spaces.
1373
1374     If **x** is not an integer or cannot fit into **4** bytes, an error message
1375     is printed instead, but bc(1) is not reset (see the **RESET** section).
1376
1377     This is a **void** function (see the *Void Functions* subsection of the
1378     **FUNCTIONS** section).
1379
1380 **uint64(x)**
1381
1382 :   Outputs the representation, in binary and hexadecimal, of **x** as an
1383     unsigned integer in **8** bytes. Both outputs are split into bytes separated
1384     by spaces.
1385
1386     If **x** is not an integer, is negative, or cannot fit into **8** bytes, an
1387     error message is printed instead, but bc(1) is not reset (see the **RESET**
1388     section).
1389
1390     This is a **void** function (see the *Void Functions* subsection of the
1391     **FUNCTIONS** section).
1392
1393 **int64(x)**
1394
1395 :   Outputs the representation, in binary and hexadecimal, of **x** as a signed,
1396     two's-complement integer in **8** bytes. Both outputs are split into bytes
1397     separated by spaces.
1398
1399     If **x** is not an integer or cannot fit into **8** bytes, an error message
1400     is printed instead, but bc(1) is not reset (see the **RESET** section).
1401
1402     This is a **void** function (see the *Void Functions* subsection of the
1403     **FUNCTIONS** section).
1404
1405 **hex_uint(x, n)**
1406
1407 :   Outputs the representation of the truncated absolute value of **x** as an
1408     unsigned integer in hexadecimal using **n** bytes. Not all of the value will
1409     be output if **n** is too small.
1410
1411     This is a **void** function (see the *Void Functions* subsection of the
1412     **FUNCTIONS** section).
1413
1414 **binary_uint(x, n)**
1415
1416 :   Outputs the representation of the truncated absolute value of **x** as an
1417     unsigned integer in binary using **n** bytes. Not all of the value will be
1418     output if **n** is too small.
1419
1420     This is a **void** function (see the *Void Functions* subsection of the
1421     **FUNCTIONS** section).
1422
1423 **output_uint(x, n)**
1424
1425 :   Outputs the representation of the truncated absolute value of **x** as an
1426     unsigned integer in the current **obase** (see the **SYNTAX** section) using
1427     **n** bytes. Not all of the value will be output if **n** is too small.
1428
1429     This is a **void** function (see the *Void Functions* subsection of the
1430     **FUNCTIONS** section).
1431
1432 **output_byte(x, i)**
1433
1434 :   Outputs byte **i** of the truncated absolute value of **x**, where **0** is
1435     the least significant byte and **number_of_bytes - 1** is the most
1436     significant byte.
1437
1438     This is a **void** function (see the *Void Functions* subsection of the
1439     **FUNCTIONS** section).
1440 {{ end }}
1441
1442 ## Transcendental Functions
1443
1444 All transcendental functions can return slightly inaccurate results (up to 1
1445 [ULP][4]). This is unavoidable, and [this article][5] explains why it is
1446 impossible and unnecessary to calculate exact results for the transcendental
1447 functions.
1448
1449 Because of the possible inaccuracy, I recommend that users call those functions
1450 with the precision (**scale**) set to at least 1 higher than is necessary. If
1451 exact results are *absolutely* required, users can double the precision
1452 (**scale**) and then truncate.
1453
1454 The transcendental functions in the standard math library are:
1455
1456 * **s(x)**
1457 * **c(x)**
1458 * **a(x)**
1459 * **l(x)**
1460 * **e(x)**
1461 * **j(x, n)**
1462
1463 {{ A H N P HN HP NP HNP }}
1464 The transcendental functions in the extended math library are:
1465
1466 * **l2(x)**
1467 * **l10(x)**
1468 * **log(x, b)**
1469 * **pi(p)**
1470 * **t(x)**
1471 * **a2(y, x)**
1472 * **sin(x)**
1473 * **cos(x)**
1474 * **tan(x)**
1475 * **atan(x)**
1476 * **atan2(y, x)**
1477 * **r2d(x)**
1478 * **d2r(x)**
1479 {{ end }}
1480
1481 # RESET
1482
1483 When bc(1) encounters an error or a signal that it has a non-default handler
1484 for, it resets. This means that several things happen.
1485
1486 First, any functions that are executing are stopped and popped off the stack.
1487 The behavior is not unlike that of exceptions in programming languages. Then
1488 the execution point is set so that any code waiting to execute (after all
1489 functions returned) is skipped.
1490
1491 Thus, when bc(1) resets, it skips any remaining code waiting to be executed.
1492 Then, if it is interactive mode, and the error was not a fatal error (see the
1493 **EXIT STATUS** section), it asks for more input; otherwise, it exits with the
1494 appropriate return code.
1495
1496 Note that this reset behavior is different from the GNU bc(1), which attempts to
1497 start executing the statement right after the one that caused an error.
1498
1499 # PERFORMANCE
1500
1501 Most bc(1) implementations use **char** types to calculate the value of **1**
1502 decimal digit at a time, but that can be slow. This bc(1) does something
1503 different.
1504
1505 It uses large integers to calculate more than **1** decimal digit at a time. If
1506 built in a environment where **BC_LONG_BIT** (see the **LIMITS** section) is
1507 **64**, then each integer has **9** decimal digits. If built in an environment
1508 where **BC_LONG_BIT** is **32** then each integer has **4** decimal digits. This
1509 value (the number of decimal digits per large integer) is called
1510 **BC_BASE_DIGS**.
1511
1512 The actual values of **BC_LONG_BIT** and **BC_BASE_DIGS** can be queried with
1513 the **limits** statement.
1514
1515 In addition, this bc(1) uses an even larger integer for overflow checking. This
1516 integer type depends on the value of **BC_LONG_BIT**, but is always at least
1517 twice as large as the integer type used to store digits.
1518
1519 # LIMITS
1520
1521 The following are the limits on bc(1):
1522
1523 **BC_LONG_BIT**
1524
1525 :   The number of bits in the **long** type in the environment where bc(1) was
1526     built. This determines how many decimal digits can be stored in a single
1527     large integer (see the **PERFORMANCE** section).
1528
1529 **BC_BASE_DIGS**
1530
1531 :   The number of decimal digits per large integer (see the **PERFORMANCE**
1532     section). Depends on **BC_LONG_BIT**.
1533
1534 **BC_BASE_POW**
1535
1536 :   The max decimal number that each large integer can store (see
1537     **BC_BASE_DIGS**) plus **1**. Depends on **BC_BASE_DIGS**.
1538
1539 **BC_OVERFLOW_MAX**
1540
1541 :   The max number that the overflow type (see the **PERFORMANCE** section) can
1542     hold. Depends on **BC_LONG_BIT**.
1543
1544 **BC_BASE_MAX**
1545
1546 :   The maximum output base. Set at **BC_BASE_POW**.
1547
1548 **BC_DIM_MAX**
1549
1550 :   The maximum size of arrays. Set at **SIZE_MAX-1**.
1551
1552 **BC_SCALE_MAX**
1553
1554 :   The maximum **scale**. Set at **BC_OVERFLOW_MAX-1**.
1555
1556 **BC_STRING_MAX**
1557
1558 :   The maximum length of strings. Set at **BC_OVERFLOW_MAX-1**.
1559
1560 **BC_NAME_MAX**
1561
1562 :   The maximum length of identifiers. Set at **BC_OVERFLOW_MAX-1**.
1563
1564 **BC_NUM_MAX**
1565
1566 :   The maximum length of a number (in decimal digits), which includes digits
1567     after the decimal point. Set at **BC_OVERFLOW_MAX-1**.
1568
1569 {{ A H N P HN HP NP HNP }}
1570 **BC_RAND_MAX**
1571
1572 :   The maximum integer (inclusive) returned by the **rand()** operand. Set at
1573     **2\^BC_LONG_BIT-1**.
1574 {{ end }}
1575
1576 Exponent
1577
1578 :   The maximum allowable exponent (positive or negative). Set at
1579     **BC_OVERFLOW_MAX**.
1580
1581 Number of vars
1582
1583 :   The maximum number of vars/arrays. Set at **SIZE_MAX-1**.
1584
1585 The actual values can be queried with the **limits** statement.
1586
1587 These limits are meant to be effectively non-existent; the limits are so large
1588 (at least on 64-bit machines) that there should not be any point at which they
1589 become a problem. In fact, memory should be exhausted before these limits should
1590 be hit.
1591
1592 # ENVIRONMENT VARIABLES
1593
1594 bc(1) recognizes the following environment variables:
1595
1596 **POSIXLY_CORRECT**
1597
1598 :   If this variable exists (no matter the contents), bc(1) behaves as if
1599     the **-s** option was given.
1600
1601 **BC_ENV_ARGS**
1602
1603 :   This is another way to give command-line arguments to bc(1). They should be
1604     in the same format as all other command-line arguments. These are always
1605     processed first, so any files given in **BC_ENV_ARGS** will be processed
1606     before arguments and files given on the command-line. This gives the user
1607     the ability to set up "standard" options and files to be used at every
1608     invocation. The most useful thing for such files to contain would be useful
1609     functions that the user might want every time bc(1) runs.
1610
1611     The code that parses **BC_ENV_ARGS** will correctly handle quoted arguments,
1612     but it does not understand escape sequences. For example, the string
1613     **"/home/gavin/some bc file.bc"** will be correctly parsed, but the string
1614     **"/home/gavin/some \"bc\" file.bc"** will include the backslashes.
1615
1616     The quote parsing will handle either kind of quotes, **'** or **"**. Thus,
1617     if you have a file with any number of single quotes in the name, you can use
1618     double quotes as the outside quotes, as in **"some 'bc' file.bc"**, and vice
1619     versa if you have a file with double quotes. However, handling a file with
1620     both kinds of quotes in **BC_ENV_ARGS** is not supported due to the
1621     complexity of the parsing, though such files are still supported on the
1622     command-line where the parsing is done by the shell.
1623
1624 **BC_LINE_LENGTH**
1625
1626 :   If this environment variable exists and contains an integer that is greater
1627     than **1** and is less than **UINT16_MAX** (**2\^16-1**), bc(1) will output
1628     lines to that length, including the backslash (**\\**). The default line
1629     length is **70**.
1630
1631 # EXIT STATUS
1632
1633 bc(1) returns the following exit statuses:
1634
1635 **0**
1636
1637 :   No error.
1638
1639 **1**
1640
1641 :   A math error occurred. This follows standard practice of using **1** for
1642     expected errors, since math errors will happen in the process of normal
1643     execution.
1644
1645 {{ A H N P HN HP NP HNP }}
1646     Math errors include divide by **0**, taking the square root of a negative
1647     number, using a negative number as a bound for the pseudo-random number
1648     generator, attempting to convert a negative number to a hardware integer,
1649     overflow when converting a number to a hardware integer, and attempting to
1650     use a non-integer where an integer is required.
1651
1652     Converting to a hardware integer happens for the second operand of the power
1653     (**\^**), places (**\@**), left shift (**\<\<**), and right shift (**\>\>**)
1654     operators and their corresponding assignment operators.
1655 {{ end }}
1656 {{ E EH EN EP EHN EHP ENP EHNP }}
1657     Math errors include divide by **0**, taking the square root of a negative
1658     number, attempting to convert a negative number to a hardware integer,
1659     overflow when converting a number to a hardware integer, and attempting to
1660     use a non-integer where an integer is required.
1661
1662     Converting to a hardware integer happens for the second operand of the power
1663     (**\^**) operator and the corresponding assignment operator.
1664 {{ end }}
1665
1666 **2**
1667
1668 :   A parse error occurred.
1669
1670     Parse errors include unexpected **EOF**, using an invalid character, failing
1671     to find the end of a string or comment, using a token where it is invalid,
1672     giving an invalid expression, giving an invalid print statement, giving an
1673     invalid function definition, attempting to assign to an expression that is
1674     not a named expression (see the *Named Expressions* subsection of the
1675     **SYNTAX** section), giving an invalid **auto** list, having a duplicate
1676     **auto**/function parameter, failing to find the end of a code block,
1677     attempting to return a value from a **void** function, attempting to use a
1678     variable as a reference, and using any extensions when the option **-s** or
1679     any equivalents were given.
1680
1681 **3**
1682
1683 :   A runtime error occurred.
1684
1685     Runtime errors include assigning an invalid number to **ibase**, **obase**,
1686     or **scale**; give a bad expression to a **read()** call, calling **read()**
1687     inside of a **read()** call, type errors, passing the wrong number of
1688     arguments to functions, attempting to call an undefined function, and
1689     attempting to use a **void** function call as a value in an expression.
1690
1691 **4**
1692
1693 :   A fatal error occurred.
1694
1695     Fatal errors include memory allocation errors, I/O errors, failing to open
1696     files, attempting to use files that do not have only ASCII characters (bc(1)
1697     only accepts ASCII characters), attempting to open a directory as a file,
1698     and giving invalid command-line options.
1699
1700 The exit status **4** is special; when a fatal error occurs, bc(1) always exits
1701 and returns **4**, no matter what mode bc(1) is in.
1702
1703 The other statuses will only be returned when bc(1) is not in interactive mode
1704 (see the **INTERACTIVE MODE** section), since bc(1) resets its state (see the
1705 **RESET** section) and accepts more input when one of those errors occurs in
1706 interactive mode. This is also the case when interactive mode is forced by the
1707 **-i** flag or **-\-interactive** option.
1708
1709 These exit statuses allow bc(1) to be used in shell scripting with error
1710 checking, and its normal behavior can be forced by using the **-i** flag or
1711 **-\-interactive** option.
1712
1713 # INTERACTIVE MODE
1714
1715 Per the [standard][1], bc(1) has an interactive mode and a non-interactive mode.
1716 Interactive mode is turned on automatically when both **stdin** and **stdout**
1717 are hooked to a terminal, but the **-i** flag and **-\-interactive** option can
1718 turn it on in other cases.
1719
1720 In interactive mode, bc(1) attempts to recover from errors (see the **RESET**
1721 section), and in normal execution, flushes **stdout** as soon as execution is
1722 done for the current input.
1723
1724 # TTY MODE
1725
1726 If **stdin**, **stdout**, and **stderr** are all connected to a TTY, bc(1) turns
1727 on "TTY mode."
1728
1729 {{ A E N P EN EP NP ENP }}
1730 TTY mode is required for history to be enabled (see the **COMMAND LINE HISTORY**
1731 section). It is also required to enable special handling for **SIGINT** signals.
1732 {{ end }}
1733
1734 {{ A E H N EH EN HN EHN }}
1735 The prompt is enabled in TTY mode.
1736 {{ end }}
1737
1738 TTY mode is different from interactive mode because interactive mode is required
1739 in the [bc(1) specification][1], and interactive mode requires only **stdin**
1740 and **stdout** to be connected to a terminal.
1741
1742 # SIGNAL HANDLING
1743
1744 Sending a **SIGINT** will cause bc(1) to stop execution of the current input. If
1745 bc(1) is in TTY mode (see the **TTY MODE** section), it will reset (see the
1746 **RESET** section). Otherwise, it will clean up and exit.
1747
1748 Note that "current input" can mean one of two things. If bc(1) is processing
1749 input from **stdin** in TTY mode, it will ask for more input. If bc(1) is
1750 processing input from a file in TTY mode, it will stop processing the file and
1751 start processing the next file, if one exists, or ask for input from **stdin**
1752 if no other file exists.
1753
1754 This means that if a **SIGINT** is sent to bc(1) as it is executing a file, it
1755 can seem as though bc(1) did not respond to the signal since it will immediately
1756 start executing the next file. This is by design; most files that users execute
1757 when interacting with bc(1) have function definitions, which are quick to parse.
1758 If a file takes a long time to execute, there may be a bug in that file. The
1759 rest of the files could still be executed without problem, allowing the user to
1760 continue.
1761
1762 **SIGTERM** and **SIGQUIT** cause bc(1) to clean up and exit, and it uses the
1763 {{ A E N P EN EP NP ENP }}
1764 default handler for all other signals. The one exception is **SIGHUP**; in that
1765 case, when bc(1) is in TTY mode, a **SIGHUP** will cause bc(1) to clean up and
1766 exit.
1767 {{ end }}
1768 {{ H EH HN HP EHN EHP HNP EHNP }}
1769 default handler for all other signals.
1770 {{ end }}
1771
1772 {{ A E N P EN EP NP ENP }}
1773 # COMMAND LINE HISTORY
1774
1775 bc(1) supports interactive command-line editing. If bc(1) is in TTY mode (see
1776 the **TTY MODE** section), history is enabled. Previous lines can be recalled
1777 and edited with the arrow keys.
1778
1779 **Note**: tabs are converted to 8 spaces.
1780 {{ end }}
1781
1782 {{ A E H P EH EP HP EHP }}
1783 # LOCALES
1784
1785 This bc(1) ships with support for adding error messages for different locales
1786 and thus, supports **LC_MESSAGES**.
1787 {{ end }}
1788
1789 # SEE ALSO
1790
1791 dc(1)
1792
1793 # STANDARDS
1794
1795 bc(1) is compliant with the [IEEE Std 1003.1-2017 (“POSIX.1-2017”)][1]
1796 specification. The flags **-efghiqsvVw**, all long options, and the extensions
1797 noted above are extensions to that specification.
1798
1799 Note that the specification explicitly says that bc(1) only accepts numbers that
1800 use a period (**.**) as a radix point, regardless of the value of
1801 **LC_NUMERIC**.
1802
1803 {{ A E H P EH EP HP EHP }}
1804 This bc(1) supports error messages for different locales, and thus, it supports
1805 **LC_MESSAGES**.
1806 {{ end }}
1807
1808 # BUGS
1809
1810 None are known. Report bugs at https://git.yzena.com/gavin/bc.
1811
1812 # AUTHORS
1813
1814 Gavin D. Howard <gavin@yzena.com> and contributors.
1815
1816 [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html
1817 [2]: https://www.gnu.org/software/bc/
1818 [3]: https://en.wikipedia.org/wiki/Rounding#Round_half_away_from_zero
1819 [4]: https://en.wikipedia.org/wiki/Unit_in_the_last_place
1820 [5]: https://people.eecs.berkeley.edu/~wkahan/LOG10HAF.TXT
1821 [6]: https://en.wikipedia.org/wiki/Rounding#Rounding_away_from_zero