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