]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bc/manuals/bc/EHNP.1.md
mlx4en(4): Fix wrong mbuf cluster size in mlx4_en_debugnet_init()
[FreeBSD/FreeBSD.git] / contrib / bc / manuals / bc / EHNP.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** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
38
39 # DESCRIPTION
40
41 bc(1) is an interactive processor for a language first standardized in 1991 by
42 POSIX. (The current standard is [here][1].) The language provides unlimited
43 precision decimal arithmetic and is somewhat C-like, but there are differences.
44 Such differences will be noted in this document.
45
46 After parsing and handling options, this bc(1) reads any files given on the
47 command line and executes them before reading from **stdin**.
48
49 # OPTIONS
50
51 The following are the options that bc(1) accepts.
52
53 **-g**, **-\-global-stacks**
54
55     Turns the globals **ibase**, **obase**, and **scale** into stacks.
56
57     This has the effect that a copy of the current value of all three are pushed
58     onto a stack for every function call, as well as popped when every function
59     returns. This means that functions can assign to any and all of those
60     globals without worrying that the change will affect other functions.
61     Thus, a hypothetical function named **output(x,b)** that simply printed
62     **x** in base **b** could be written like this:
63
64         define void output(x, b) {
65             obase=b
66             x
67         }
68
69     instead of like this:
70
71         define void output(x, b) {
72             auto c
73             c=obase
74             obase=b
75             x
76             obase=c
77         }
78
79     This makes writing functions much easier.
80
81     However, since using this flag means that functions cannot set **ibase**,
82     **obase**, or **scale** globally, functions that are made to do so cannot
83     work anymore. There are two possible use cases for that, and each has a
84     solution.
85
86     First, if a function is called on startup to turn bc(1) into a number
87     converter, it is possible to replace that capability with various shell
88     aliases. Examples:
89
90         alias d2o="bc -e ibase=A -e obase=8"
91         alias h2b="bc -e ibase=G -e obase=2"
92
93     Second, if the purpose of a function is to set **ibase**, **obase**, or
94     **scale** globally for any other purpose, it could be split into one to
95     three functions (based on how many globals it sets) and each of those
96     functions could return the desired value for a global.
97
98     If the behavior of this option is desired for every run of bc(1), then users
99     could make sure to define **BC_ENV_ARGS** and include this option (see the
100     **ENVIRONMENT VARIABLES** section for more details).
101
102     If **-s**, **-w**, or any equivalents are used, this option is ignored.
103
104     This is a **non-portable extension**.
105
106 **-h**, **-\-help**
107
108 :   Prints a usage message and quits.
109
110 **-i**, **-\-interactive**
111
112 :   Forces interactive mode. (See the **INTERACTIVE MODE** section.)
113
114     This is a **non-portable extension**.
115
116 **-l**, **-\-mathlib**
117
118 :   Sets **scale** (see the **SYNTAX** section) to **20** and loads the included
119     math library before running any code, including any expressions or files
120     specified on the command line.
121
122     To learn what is in the library, see the **LIBRARY** section.
123
124 **-P**, **-\-no-prompt**
125
126 :   This option is a no-op.
127
128     This is a **non-portable extension**.
129
130 **-R**, **-\-no-read-prompt**
131
132 :   Because bc(1) was built without support for prompts, this option is a no-op.
133
134     This is a **non-portable extension**.
135
136 **-q**, **-\-quiet**
137
138 :   This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
139     Without this option, GNU bc(1) prints a copyright header. This bc(1) only
140     prints the copyright header if one or more of the **-v**, **-V**, or
141     **-\-version** options are given.
142
143     This is a **non-portable extension**.
144
145 **-s**, **-\-standard**
146
147 :   Process exactly the language defined by the [standard][1] and error if any
148     extensions are used.
149
150     This is a **non-portable extension**.
151
152 **-v**, **-V**, **-\-version**
153
154 :   Print the version information (copyright header) and exit.
155
156     This is a **non-portable extension**.
157
158 **-w**, **-\-warn**
159
160 :   Like **-s** and **-\-standard**, except that warnings (and not errors) are
161     printed for non-standard extensions and execution continues normally.
162
163     This is a **non-portable extension**.
164
165 **-e** *expr*, **-\-expression**=*expr*
166
167 :   Evaluates *expr*. If multiple expressions are given, they are evaluated in
168     order. If files are given as well (see below), the expressions and files are
169     evaluated in the order given. This means that if a file is given before an
170     expression, the file is read in and evaluated first.
171
172     If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
173     see the **ENVIRONMENT VARIABLES** section), then after processing all
174     expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
175     as an argument at least once to **-f** or **-\-file**, whether on the
176     command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
177     **-\-expression**, **-f**, or **-\-file** arguments are given after **-f-**
178     or equivalent is given, bc(1) will give a fatal error and exit.
179
180     This is a **non-portable extension**.
181
182 **-f** *file*, **-\-file**=*file*
183
184 :   Reads in *file* and evaluates it, line by line, as though it were read
185     through **stdin**. If expressions are also given (see above), the
186     expressions are evaluated in the order given.
187
188     If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
189     see the **ENVIRONMENT VARIABLES** section), then after processing all
190     expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
191     as an argument at least once to **-f** or **-\-file**. However, if any other
192     **-e**, **-\-expression**, **-f**, or **-\-file** arguments are given after
193     **-f-** or equivalent is given, bc(1) will give a fatal error and exit.
194
195     This is a **non-portable extension**.
196
197 All long options are **non-portable extensions**.
198
199 # STDOUT
200
201 Any non-error output is written to **stdout**. In addition, if history (see the
202 **HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
203 both are output to **stdout**.
204
205 **Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
206 error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
207 **stdout** is closed, as in **bc <file> >&-**, it will quit with an error. This
208 is done so that bc(1) can report problems when **stdout** is redirected to a
209 file.
210
211 If there are scripts that depend on the behavior of other bc(1) implementations,
212 it is recommended that those scripts be changed to redirect **stdout** to
213 **/dev/null**.
214
215 # STDERR
216
217 Any error output is written to **stderr**.
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 **stderr**, so if
221 **stderr** is closed, as in **bc <file> 2>&-**, it will quit with an error. This
222 is done so that bc(1) can exit with an error code when **stderr** is redirected
223 to a 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 **stderr** to
227 **/dev/null**.
228
229 # SYNTAX
230
231 The syntax for bc(1) programs is mostly C-like, with some differences. This
232 bc(1) follows the [POSIX standard][1], which is a much more thorough resource
233 for the language this bc(1) accepts. This section is meant to be a summary and a
234 listing of all the extensions to the standard.
235
236 In the sections below, **E** means expression, **S** means statement, and **I**
237 means identifier.
238
239 Identifiers (**I**) start with a lowercase letter and can be followed by any
240 number (up to **BC_NAME_MAX-1**) of lowercase letters (**a-z**), digits
241 (**0-9**), and underscores (**\_**). The regex is **\[a-z\]\[a-z0-9\_\]\***.
242 Identifiers with more than one character (letter) are a
243 **non-portable extension**.
244
245 **ibase** is a global variable determining how to interpret constant numbers. It
246 is the "input" base, or the number base used for interpreting input numbers.
247 **ibase** is initially **10**. If the **-s** (**-\-standard**) and **-w**
248 (**-\-warn**) flags were not given on the command line, the max allowable value
249 for **ibase** is **36**. Otherwise, it is **16**. The min allowable value for
250 **ibase** is **2**. The max allowable value for **ibase** can be queried in
251 bc(1) programs with the **maxibase()** built-in function.
252
253 **obase** is a global variable determining how to output results. It is the
254 "output" base, or the number base used for outputting numbers. **obase** is
255 initially **10**. The max allowable value for **obase** is **BC_BASE_MAX** and
256 can be queried in bc(1) programs with the **maxobase()** built-in function. The
257 min allowable value for **obase** is **2**. Values are output in the specified
258 base.
259
260 The *scale* of an expression is the number of digits in the result of the
261 expression right of the decimal point, and **scale** is a global variable that
262 sets the precision of any operations, with exceptions. **scale** is initially
263 **0**. **scale** cannot be negative. The max allowable value for **scale** is
264 **BC_SCALE_MAX** and can be queried in bc(1) programs with the **maxscale()**
265 built-in function.
266
267 bc(1) has both *global* variables and *local* variables. All *local*
268 variables are local to the function; they are parameters or are introduced in
269 the **auto** list of a function (see the **FUNCTIONS** section). If a variable
270 is accessed which is not a parameter or in the **auto** list, it is assumed to
271 be *global*. If a parent function has a *local* variable version of a variable
272 that a child function considers *global*, the value of that *global* variable in
273 the child function is the value of the variable in the parent function, not the
274 value of the actual *global* variable.
275
276 All of the above applies to arrays as well.
277
278 The value of a statement that is an expression (i.e., any of the named
279 expressions or operands) is printed unless the lowest precedence operator is an
280 assignment operator *and* the expression is notsurrounded by parentheses.
281
282 The value that is printed is also assigned to the special variable **last**. A
283 single dot (**.**) may also be used as a synonym for **last**. These are
284 **non-portable extensions**.
285
286 Either semicolons or newlines may separate statements.
287
288 ## Comments
289
290 There are two kinds of comments:
291
292 1.      Block comments are enclosed in **/\*** and **\*/**.
293 2.      Line comments go from **#** until, and not including, the next newline. This
294         is a **non-portable extension**.
295
296 ## Named Expressions
297
298 The following are named expressions in bc(1):
299
300 1.      Variables: **I**
301 2.      Array Elements: **I[E]**
302 3.      **ibase**
303 4.      **obase**
304 5.      **scale**
305 6.      **last** or a single dot (**.**)
306
307 Number 6 is a **non-portable extension**.
308
309 Variables and arrays do not interfere; users can have arrays named the same as
310 variables. This also applies to functions (see the **FUNCTIONS** section), so a
311 user can have a variable, array, and function that all have the same name, and
312 they will not shadow each other, whether inside of functions or not.
313
314 Named expressions are required as the operand of **increment**/**decrement**
315 operators  and as the left side of **assignment** operators (see the *Operators*
316 subsection).
317
318 ## Operands
319
320 The following are valid operands in bc(1):
321
322 1.      Numbers (see the *Numbers* subsection below).
323 2.      Array indices (**I[E]**).
324 3.      **(E)**: The value of **E** (used to change precedence).
325 4.      **sqrt(E)**: The square root of **E**. **E** must be non-negative.
326 5.      **length(E)**: The number of significant decimal digits in **E**.
327 6.      **length(I[])**: The number of elements in the array **I**. This is a
328         **non-portable extension**.
329 7.      **scale(E)**: The *scale* of **E**.
330 8.      **abs(E)**: The absolute value of **E**. This is a **non-portable
331         extension**.
332 9.      **I()**, **I(E)**, **I(E, E)**, and so on, where **I** is an identifier for
333         a non-**void** function (see the *Void Functions* subsection of the
334         **FUNCTIONS** section). The **E** argument(s) may also be arrays of the form
335         **I[]**, which will automatically be turned into array references (see the
336         *Array References* subsection of the **FUNCTIONS** section) if the
337         corresponding parameter in the function definition is an array reference.
338 10.     **read()**: Reads a line from **stdin** and uses that as an expression. The
339         result of that expression is the result of the **read()** operand. This is a
340         **non-portable extension**.
341 11.     **maxibase()**: The max allowable **ibase**. This is a **non-portable
342         extension**.
343 12.     **maxobase()**: The max allowable **obase**. This is a **non-portable
344         extension**.
345 13.     **maxscale()**: The max allowable **scale**. This is a **non-portable
346         extension**.
347
348 ## Numbers
349
350 Numbers are strings made up of digits, uppercase letters, and at most **1**
351 period for a radix. Numbers can have up to **BC_NUM_MAX** digits. Uppercase
352 letters are equal to **9** + their position in the alphabet (i.e., **A** equals
353 **10**, or **9+1**). If a digit or letter makes no sense with the current value
354 of **ibase**, they are set to the value of the highest valid digit in **ibase**.
355
356 Single-character numbers (i.e., **A** alone) take the value that they would have
357 if they were valid digits, regardless of the value of **ibase**. This means that
358 **A** alone always equals decimal **10** and **Z** alone always equals decimal
359 **35**.
360
361 ## Operators
362
363 The following arithmetic and logical operators can be used. They are listed in
364 order of decreasing precedence. Operators in the same group have the same
365 precedence.
366
367 **++** **-\-**
368
369 :   Type: Prefix and Postfix
370
371     Associativity: None
372
373     Description: **increment**, **decrement**
374
375 **-** **!**
376
377 :   Type: Prefix
378
379     Associativity: None
380
381     Description: **negation**, **boolean not**
382
383 **\^**
384
385 :   Type: Binary
386
387     Associativity: Right
388
389     Description: **power**
390
391 **\*** **/** **%**
392
393 :   Type: Binary
394
395     Associativity: Left
396
397     Description: **multiply**, **divide**, **modulus**
398
399 **+** **-**
400
401 :   Type: Binary
402
403     Associativity: Left
404
405     Description: **add**, **subtract**
406
407 **=** **+=** **-=** **\*=** **/=** **%=** **\^=**
408
409 :   Type: Binary
410
411     Associativity: Right
412
413     Description: **assignment**
414
415 **==** **\<=** **\>=** **!=** **\<** **\>**
416
417 :   Type: Binary
418
419     Associativity: Left
420
421     Description: **relational**
422
423 **&&**
424
425 :   Type: Binary
426
427     Associativity: Left
428
429     Description: **boolean and**
430
431 **||**
432
433 :   Type: Binary
434
435     Associativity: Left
436
437     Description: **boolean or**
438
439 The operators will be described in more detail below.
440
441 **++** **-\-**
442
443 :   The prefix and postfix **increment** and **decrement** operators behave
444     exactly like they would in C. They require a named expression (see the
445     *Named Expressions* subsection) as an operand.
446
447     The prefix versions of these operators are more efficient; use them where
448     possible.
449
450 **-**
451
452 :   The **negation** operator returns **0** if a user attempts to negate any
453     expression with the value **0**. Otherwise, a copy of the expression with
454     its sign flipped is returned.
455
456 **!**
457
458 :   The **boolean not** operator returns **1** if the expression is **0**, or
459     **0** otherwise.
460
461     This is a **non-portable extension**.
462
463 **\^**
464
465 :   The **power** operator (not the **exclusive or** operator, as it would be in
466     C) takes two expressions and raises the first to the power of the value of
467     the second. The *scale* of the result is equal to **scale**.
468
469     The second expression must be an integer (no *scale*), and if it is
470     negative, the first value must be non-zero.
471
472 **\***
473
474 :   The **multiply** operator takes two expressions, multiplies them, and
475     returns the product. If **a** is the *scale* of the first expression and
476     **b** is the *scale* of the second expression, the *scale* of the result is
477     equal to **min(a+b,max(scale,a,b))** where **min()** and **max()** return
478     the obvious values.
479
480 **/**
481
482 :   The **divide** operator takes two expressions, divides them, and returns the
483     quotient. The *scale* of the result shall be the value of **scale**.
484
485     The second expression must be non-zero.
486
487 **%**
488
489 :   The **modulus** operator takes two expressions, **a** and **b**, and
490     evaluates them by 1) Computing **a/b** to current **scale** and 2) Using the
491     result of step 1 to calculate **a-(a/b)\*b** to *scale*
492     **max(scale+scale(b),scale(a))**.
493
494     The second expression must be non-zero.
495
496 **+**
497
498 :   The **add** operator takes two expressions, **a** and **b**, and returns the
499     sum, with a *scale* equal to the max of the *scale*s of **a** and **b**.
500
501 **-**
502
503 :   The **subtract** operator takes two expressions, **a** and **b**, and
504     returns the difference, with a *scale* equal to the max of the *scale*s of
505     **a** and **b**.
506
507 **=** **+=** **-=** **\*=** **/=** **%=** **\^=**
508
509 :   The **assignment** operators take two expressions, **a** and **b** where
510     **a** is a named expression (see the *Named Expressions* subsection).
511
512     For **=**, **b** is copied and the result is assigned to **a**. For all
513     others, **a** and **b** are applied as operands to the corresponding
514     arithmetic operator and the result is assigned to **a**.
515
516 **==** **\<=** **\>=** **!=** **\<** **\>**
517
518 :   The **relational** operators compare two expressions, **a** and **b**, and
519     if the relation holds, according to C language semantics, the result is
520     **1**. Otherwise, it is **0**.
521
522     Note that unlike in C, these operators have a lower precedence than the
523     **assignment** operators, which means that **a=b\>c** is interpreted as
524     **(a=b)\>c**.
525
526     Also, unlike the [standard][1] requires, these operators can appear anywhere
527     any other expressions can be used. This allowance is a
528     **non-portable extension**.
529
530 **&&**
531
532 :   The **boolean and** operator takes two expressions and returns **1** if both
533     expressions are non-zero, **0** otherwise.
534
535     This is *not* a short-circuit operator.
536
537     This is a **non-portable extension**.
538
539 **||**
540
541 :   The **boolean or** operator takes two expressions and returns **1** if one
542     of the expressions is non-zero, **0** otherwise.
543
544     This is *not* a short-circuit operator.
545
546     This is a **non-portable extension**.
547
548 ## Statements
549
550 The following items are statements:
551
552 1.      **E**
553 2.      **{** **S** **;** ... **;** **S** **}**
554 3.      **if** **(** **E** **)** **S**
555 4.      **if** **(** **E** **)** **S** **else** **S**
556 5.      **while** **(** **E** **)** **S**
557 6.      **for** **(** **E** **;** **E** **;** **E** **)** **S**
558 7.      An empty statement
559 8.      **break**
560 9.      **continue**
561 10.     **quit**
562 11.     **halt**
563 12.     **limits**
564 13.     A string of characters, enclosed in double quotes
565 14.     **print** **E** **,** ... **,** **E**
566 15.     **I()**, **I(E)**, **I(E, E)**, and so on, where **I** is an identifier for
567         a **void** function (see the *Void Functions* subsection of the
568         **FUNCTIONS** section). The **E** argument(s) may also be arrays of the form
569         **I[]**, which will automatically be turned into array references (see the
570         *Array References* subsection of the **FUNCTIONS** section) if the
571         corresponding parameter in the function definition is an array reference.
572
573 Numbers 4, 9, 11, 12, 14, and 15 are **non-portable extensions**.
574
575 Also, as a **non-portable extension**, any or all of the expressions in the
576 header of a for loop may be omitted. If the condition (second expression) is
577 omitted, it is assumed to be a constant **1**.
578
579 The **break** statement causes a loop to stop iterating and resume execution
580 immediately following a loop. This is only allowed in loops.
581
582 The **continue** statement causes a loop iteration to stop early and returns to
583 the start of the loop, including testing the loop condition. This is only
584 allowed in loops.
585
586 The **if** **else** statement does the same thing as in C.
587
588 The **quit** statement causes bc(1) to quit, even if it is on a branch that will
589 not be executed (it is a compile-time command).
590
591 The **halt** statement causes bc(1) to quit, if it is executed. (Unlike **quit**
592 if it is on a branch of an **if** statement that is not executed, bc(1) does not
593 quit.)
594
595 The **limits** statement prints the limits that this bc(1) is subject to. This
596 is like the **quit** statement in that it is a compile-time command.
597
598 An expression by itself is evaluated and printed, followed by a newline.
599
600 ## Print Statement
601
602 The "expressions" in a **print** statement may also be strings. If they are, there
603 are backslash escape sequences that are interpreted specially. What those
604 sequences are, and what they cause to be printed, are shown below:
605
606 -------- -------
607 **\\a**  **\\a**
608 **\\b**  **\\b**
609 **\\\\** **\\**
610 **\\e**  **\\**
611 **\\f**  **\\f**
612 **\\n**  **\\n**
613 **\\q**  **"**
614 **\\r**  **\\r**
615 **\\t**  **\\t**
616 -------- -------
617
618 Any other character following a backslash causes the backslash and character to
619 be printed as-is.
620
621 Any non-string expression in a print statement shall be assigned to **last**,
622 like any other expression that is printed.
623
624 ## Order of Evaluation
625
626 All expressions in a statment are evaluated left to right, except as necessary
627 to maintain order of operations. This means, for example, assuming that **i** is
628 equal to **0**, in the expression
629
630     a[i++] = i++
631
632 the first (or 0th) element of **a** is set to **1**, and **i** is equal to **2**
633 at the end of the expression.
634
635 This includes function arguments. Thus, assuming **i** is equal to **0**, this
636 means that in the expression
637
638     x(i++, i++)
639
640 the first argument passed to **x()** is **0**, and the second argument is **1**,
641 while **i** is equal to **2** before the function starts executing.
642
643 # FUNCTIONS
644
645 Function definitions are as follows:
646
647 ```
648 define I(I,...,I){
649         auto I,...,I
650         S;...;S
651         return(E)
652 }
653 ```
654
655 Any **I** in the parameter list or **auto** list may be replaced with **I[]** to
656 make a parameter or **auto** var an array, and any **I** in the parameter list
657 may be replaced with **\*I[]** to make a parameter an array reference. Callers
658 of functions that take array references should not put an asterisk in the call;
659 they must be called with just **I[]** like normal array parameters and will be
660 automatically converted into references.
661
662 As a **non-portable extension**, the opening brace of a **define** statement may
663 appear on the next line.
664
665 As a **non-portable extension**, the return statement may also be in one of the
666 following forms:
667
668 1.      **return**
669 2.      **return** **(** **)**
670 3.      **return** **E**
671
672 The first two, or not specifying a **return** statement, is equivalent to
673 **return (0)**, unless the function is a **void** function (see the *Void
674 Functions* subsection below).
675
676 ## Void Functions
677
678 Functions can also be **void** functions, defined as follows:
679
680 ```
681 define void I(I,...,I){
682         auto I,...,I
683         S;...;S
684         return
685 }
686 ```
687
688 They can only be used as standalone expressions, where such an expression would
689 be printed alone, except in a print statement.
690
691 Void functions can only use the first two **return** statements listed above.
692 They can also omit the return statement entirely.
693
694 The word "void" is not treated as a keyword; it is still possible to have
695 variables, arrays, and functions named **void**. The word "void" is only
696 treated specially right after the **define** keyword.
697
698 This is a **non-portable extension**.
699
700 ## Array References
701
702 For any array in the parameter list, if the array is declared in the form
703
704 ```
705 *I[]
706 ```
707
708 it is a **reference**. Any changes to the array in the function are reflected,
709 when the function returns, to the array that was passed in.
710
711 Other than this, all function arguments are passed by value.
712
713 This is a **non-portable extension**.
714
715 # LIBRARY
716
717 All of the functions below  are available when the **-l** or **-\-mathlib**
718 command-line flags are given.
719
720 ## Standard Library
721
722 The [standard][1] defines the following functions for the math library:
723
724 **s(x)**
725
726 :   Returns the sine of **x**, which is assumed to be in radians.
727
728     This is a transcendental function (see the *Transcendental Functions*
729     subsection below).
730
731 **c(x)**
732
733 :   Returns the cosine of **x**, which is assumed to be in radians.
734
735     This is a transcendental function (see the *Transcendental Functions*
736     subsection below).
737
738 **a(x)**
739
740 :   Returns the arctangent of **x**, in radians.
741
742     This is a transcendental function (see the *Transcendental Functions*
743     subsection below).
744
745 **l(x)**
746
747 :   Returns the natural logarithm of **x**.
748
749     This is a transcendental function (see the *Transcendental Functions*
750     subsection below).
751
752 **e(x)**
753
754 :   Returns the mathematical constant **e** raised to the power of **x**.
755
756     This is a transcendental function (see the *Transcendental Functions*
757     subsection below).
758
759 **j(x, n)**
760
761 :   Returns the bessel integer order **n** (truncated) of **x**.
762
763     This is a transcendental function (see the *Transcendental Functions*
764     subsection below).
765
766 ## Transcendental Functions
767
768 All transcendental functions can return slightly inaccurate results (up to 1
769 [ULP][4]). This is unavoidable, and [this article][5] explains why it is
770 impossible and unnecessary to calculate exact results for the transcendental
771 functions.
772
773 Because of the possible inaccuracy, I recommend that users call those functions
774 with the precision (**scale**) set to at least 1 higher than is necessary. If
775 exact results are *absolutely* required, users can double the precision
776 (**scale**) and then truncate.
777
778 The transcendental functions in the standard math library are:
779
780 * **s(x)**
781 * **c(x)**
782 * **a(x)**
783 * **l(x)**
784 * **e(x)**
785 * **j(x, n)**
786
787 # RESET
788
789 When bc(1) encounters an error or a signal that it has a non-default handler
790 for, it resets. This means that several things happen.
791
792 First, any functions that are executing are stopped and popped off the stack.
793 The behavior is not unlike that of exceptions in programming languages. Then
794 the execution point is set so that any code waiting to execute (after all
795 functions returned) is skipped.
796
797 Thus, when bc(1) resets, it skips any remaining code waiting to be executed.
798 Then, if it is interactive mode, and the error was not a fatal error (see the
799 **EXIT STATUS** section), it asks for more input; otherwise, it exits with the
800 appropriate return code.
801
802 Note that this reset behavior is different from the GNU bc(1), which attempts to
803 start executing the statement right after the one that caused an error.
804
805 # PERFORMANCE
806
807 Most bc(1) implementations use **char** types to calculate the value of **1**
808 decimal digit at a time, but that can be slow. This bc(1) does something
809 different.
810
811 It uses large integers to calculate more than **1** decimal digit at a time. If
812 built in a environment where **BC_LONG_BIT** (see the **LIMITS** section) is
813 **64**, then each integer has **9** decimal digits. If built in an environment
814 where **BC_LONG_BIT** is **32** then each integer has **4** decimal digits. This
815 value (the number of decimal digits per large integer) is called
816 **BC_BASE_DIGS**.
817
818 The actual values of **BC_LONG_BIT** and **BC_BASE_DIGS** can be queried with
819 the **limits** statement.
820
821 In addition, this bc(1) uses an even larger integer for overflow checking. This
822 integer type depends on the value of **BC_LONG_BIT**, but is always at least
823 twice as large as the integer type used to store digits.
824
825 # LIMITS
826
827 The following are the limits on bc(1):
828
829 **BC_LONG_BIT**
830
831 :   The number of bits in the **long** type in the environment where bc(1) was
832     built. This determines how many decimal digits can be stored in a single
833     large integer (see the **PERFORMANCE** section).
834
835 **BC_BASE_DIGS**
836
837 :   The number of decimal digits per large integer (see the **PERFORMANCE**
838     section). Depends on **BC_LONG_BIT**.
839
840 **BC_BASE_POW**
841
842 :   The max decimal number that each large integer can store (see
843     **BC_BASE_DIGS**) plus **1**. Depends on **BC_BASE_DIGS**.
844
845 **BC_OVERFLOW_MAX**
846
847 :   The max number that the overflow type (see the **PERFORMANCE** section) can
848     hold. Depends on **BC_LONG_BIT**.
849
850 **BC_BASE_MAX**
851
852 :   The maximum output base. Set at **BC_BASE_POW**.
853
854 **BC_DIM_MAX**
855
856 :   The maximum size of arrays. Set at **SIZE_MAX-1**.
857
858 **BC_SCALE_MAX**
859
860 :   The maximum **scale**. Set at **BC_OVERFLOW_MAX-1**.
861
862 **BC_STRING_MAX**
863
864 :   The maximum length of strings. Set at **BC_OVERFLOW_MAX-1**.
865
866 **BC_NAME_MAX**
867
868 :   The maximum length of identifiers. Set at **BC_OVERFLOW_MAX-1**.
869
870 **BC_NUM_MAX**
871
872 :   The maximum length of a number (in decimal digits), which includes digits
873     after the decimal point. Set at **BC_OVERFLOW_MAX-1**.
874
875 Exponent
876
877 :   The maximum allowable exponent (positive or negative). Set at
878     **BC_OVERFLOW_MAX**.
879
880 Number of vars
881
882 :   The maximum number of vars/arrays. Set at **SIZE_MAX-1**.
883
884 The actual values can be queried with the **limits** statement.
885
886 These limits are meant to be effectively non-existent; the limits are so large
887 (at least on 64-bit machines) that there should not be any point at which they
888 become a problem. In fact, memory should be exhausted before these limits should
889 be hit.
890
891 # ENVIRONMENT VARIABLES
892
893 bc(1) recognizes the following environment variables:
894
895 **POSIXLY_CORRECT**
896
897 :   If this variable exists (no matter the contents), bc(1) behaves as if
898     the **-s** option was given.
899
900 **BC_ENV_ARGS**
901
902 :   This is another way to give command-line arguments to bc(1). They should be
903     in the same format as all other command-line arguments. These are always
904     processed first, so any files given in **BC_ENV_ARGS** will be processed
905     before arguments and files given on the command-line. This gives the user
906     the ability to set up "standard" options and files to be used at every
907     invocation. The most useful thing for such files to contain would be useful
908     functions that the user might want every time bc(1) runs.
909
910     The code that parses **BC_ENV_ARGS** will correctly handle quoted arguments,
911     but it does not understand escape sequences. For example, the string
912     **"/home/gavin/some bc file.bc"** will be correctly parsed, but the string
913     **"/home/gavin/some \"bc\" file.bc"** will include the backslashes.
914
915     The quote parsing will handle either kind of quotes, **'** or **"**. Thus,
916     if you have a file with any number of single quotes in the name, you can use
917     double quotes as the outside quotes, as in **"some 'bc' file.bc"**, and vice
918     versa if you have a file with double quotes. However, handling a file with
919     both kinds of quotes in **BC_ENV_ARGS** is not supported due to the
920     complexity of the parsing, though such files are still supported on the
921     command-line where the parsing is done by the shell.
922
923 **BC_LINE_LENGTH**
924
925 :   If this environment variable exists and contains an integer that is greater
926     than **1** and is less than **UINT16_MAX** (**2\^16-1**), bc(1) will output
927     lines to that length, including the backslash (**\\**). The default line
928     length is **70**.
929
930 # EXIT STATUS
931
932 bc(1) returns the following exit statuses:
933
934 **0**
935
936 :   No error.
937
938 **1**
939
940 :   A math error occurred. This follows standard practice of using **1** for
941     expected errors, since math errors will happen in the process of normal
942     execution.
943
944     Math errors include divide by **0**, taking the square root of a negative
945     number, attempting to convert a negative number to a hardware integer,
946     overflow when converting a number to a hardware integer, and attempting to
947     use a non-integer where an integer is required.
948
949     Converting to a hardware integer happens for the second operand of the power
950     (**\^**) operator and the corresponding assignment operator.
951
952 **2**
953
954 :   A parse error occurred.
955
956     Parse errors include unexpected **EOF**, using an invalid character, failing
957     to find the end of a string or comment, using a token where it is invalid,
958     giving an invalid expression, giving an invalid print statement, giving an
959     invalid function definition, attempting to assign to an expression that is
960     not a named expression (see the *Named Expressions* subsection of the
961     **SYNTAX** section), giving an invalid **auto** list, having a duplicate
962     **auto**/function parameter, failing to find the end of a code block,
963     attempting to return a value from a **void** function, attempting to use a
964     variable as a reference, and using any extensions when the option **-s** or
965     any equivalents were given.
966
967 **3**
968
969 :   A runtime error occurred.
970
971     Runtime errors include assigning an invalid number to **ibase**, **obase**,
972     or **scale**; give a bad expression to a **read()** call, calling **read()**
973     inside of a **read()** call, type errors, passing the wrong number of
974     arguments to functions, attempting to call an undefined function, and
975     attempting to use a **void** function call as a value in an expression.
976
977 **4**
978
979 :   A fatal error occurred.
980
981     Fatal errors include memory allocation errors, I/O errors, failing to open
982     files, attempting to use files that do not have only ASCII characters (bc(1)
983     only accepts ASCII characters), attempting to open a directory as a file,
984     and giving invalid command-line options.
985
986 The exit status **4** is special; when a fatal error occurs, bc(1) always exits
987 and returns **4**, no matter what mode bc(1) is in.
988
989 The other statuses will only be returned when bc(1) is not in interactive mode
990 (see the **INTERACTIVE MODE** section), since bc(1) resets its state (see the
991 **RESET** section) and accepts more input when one of those errors occurs in
992 interactive mode. This is also the case when interactive mode is forced by the
993 **-i** flag or **-\-interactive** option.
994
995 These exit statuses allow bc(1) to be used in shell scripting with error
996 checking, and its normal behavior can be forced by using the **-i** flag or
997 **-\-interactive** option.
998
999 # INTERACTIVE MODE
1000
1001 Per the [standard][1], bc(1) has an interactive mode and a non-interactive mode.
1002 Interactive mode is turned on automatically when both **stdin** and **stdout**
1003 are hooked to a terminal, but the **-i** flag and **-\-interactive** option can
1004 turn it on in other cases.
1005
1006 In interactive mode, bc(1) attempts to recover from errors (see the **RESET**
1007 section), and in normal execution, flushes **stdout** as soon as execution is
1008 done for the current input.
1009
1010 # TTY MODE
1011
1012 If **stdin**, **stdout**, and **stderr** are all connected to a TTY, bc(1) turns
1013 on "TTY mode."
1014
1015 TTY mode is different from interactive mode because interactive mode is required
1016 in the [bc(1) specification][1], and interactive mode requires only **stdin**
1017 and **stdout** to be connected to a terminal.
1018
1019 # SIGNAL HANDLING
1020
1021 Sending a **SIGINT** will cause bc(1) to stop execution of the current input. If
1022 bc(1) is in TTY mode (see the **TTY MODE** section), it will reset (see the
1023 **RESET** section). Otherwise, it will clean up and exit.
1024
1025 Note that "current input" can mean one of two things. If bc(1) is processing
1026 input from **stdin** in TTY mode, it will ask for more input. If bc(1) is
1027 processing input from a file in TTY mode, it will stop processing the file and
1028 start processing the next file, if one exists, or ask for input from **stdin**
1029 if no other file exists.
1030
1031 This means that if a **SIGINT** is sent to bc(1) as it is executing a file, it
1032 can seem as though bc(1) did not respond to the signal since it will immediately
1033 start executing the next file. This is by design; most files that users execute
1034 when interacting with bc(1) have function definitions, which are quick to parse.
1035 If a file takes a long time to execute, there may be a bug in that file. The
1036 rest of the files could still be executed without problem, allowing the user to
1037 continue.
1038
1039 **SIGTERM** and **SIGQUIT** cause bc(1) to clean up and exit, and it uses the
1040 default handler for all other signals.
1041
1042 # SEE ALSO
1043
1044 dc(1)
1045
1046 # STANDARDS
1047
1048 bc(1) is compliant with the [IEEE Std 1003.1-2017 (“POSIX.1-2017”)][1]
1049 specification. The flags **-efghiqsvVw**, all long options, and the extensions
1050 noted above are extensions to that specification.
1051
1052 Note that the specification explicitly says that bc(1) only accepts numbers that
1053 use a period (**.**) as a radix point, regardless of the value of
1054 **LC_NUMERIC**.
1055
1056 # BUGS
1057
1058 None are known. Report bugs at https://git.yzena.com/gavin/bc.
1059
1060 # AUTHORS
1061
1062 Gavin D. Howard <gavin@yzena.com> and contributors.
1063
1064 [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html
1065 [2]: https://www.gnu.org/software/bc/
1066 [3]: https://en.wikipedia.org/wiki/Rounding#Round_half_away_from_zero
1067 [4]: https://en.wikipedia.org/wiki/Unit_in_the_last_place
1068 [5]: https://people.eecs.berkeley.edu/~wkahan/LOG10HAF.TXT
1069 [6]: https://en.wikipedia.org/wiki/Rounding#Rounding_away_from_zero