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