### Table of Contents

## GNU bc Cheat Sheet

### Overview

- bc is a command-line calculator and primitive language

- bc is a POSIX standard but the GNU version has added functionality

- bc by default runs in integer mode (scale=0) and with no trig functions, running
`bc -l`

loads trig functions and sets scale to 20

- bc can only take expressions on standard input or in files, not directly on the command line. One way to do a bc one-liner is
`echo 3+4 | bc`

.

- useful bash aliases

mbc () { echo $@ | bc -l -q ~/bin/extensions.bc } alias bc="bc -l -q ~/bin/extensions.bc"

So now ` mbc '(3+5)/6' `

works as expected

- bc uses readline so ⇑ and ⇓ (for history) and ctrl-r (for searching) work as expected.

### Basic Usage

- Any alphanumeric variable name is allowed once it starts with a letter.

- There are 4 special variables
`last`

- The value of the last printed number`scale`

- number of decimal places to display`ibase`

- base to be used for input values`obase`

- base to be used for output values

- Any expression that is not an assignment is displayed and stored in the
`last`

variable.

- Every value and every expression is a number. The assignment operator returns 0. Booleans are 0 / 1.

- Basic + - / * = == work. % is modulo . ^ is integer exponentiation.

- Predefined functions are :
- s - sine , c - cosine
- a - arctan , j(n,x) - Bessel function
- l - natural log , e - e to the power of
- length, scale, sqrt - as named

- && , || , ! work as expected (return 0 or 1).

### Advanced Usage

- New functions are easy to define e.g.
define log(x,y) { auto retval = l(y)/l(x) return retval }

Note that the `auto`

keyword is used to declare a local variable.

`if(cond) else`

,`while(cond)`

and`for(init;cond;inc)`

control flow structures are all supported.`break`

and`continue`

are also supported.

`read()`

is used to read a value from standard input.`print()`

prints to standard output.

- Arrays can be used by using
`[subscript]`

after the array name.

- Special commands include
`quit`

,`limits`

and`warranty`

.