DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK

# (bc.info.gz) Examples

Info Catalog (bc.info.gz) Functions (bc.info.gz) Top (bc.info.gz) Readline and Libedit Options
```
Examples
********

In /bin/sh,  the following will assign the value of "pi" to the shell
variable PI.

pi=\$(echo "scale=10; 4*a(1)" | bc -l)

The following is the definition of the exponential function used in
the math library.  This function is written in POSIX `bc'.

scale = 20

/* Uses the fact that e^x = (e^(x/2))^2
When x is small enough, we use the series:
e^x = 1 + x + x^2/2! + x^3/3! + ...
*/

define e(x) {
auto  a, d, e, f, i, m, v, z

/* Check the sign of x. */
if (x<0) {
m = 1
x = -x
}

/* Precondition x. */
z = scale;
scale = 4 + z + .44*x;
while (x > 1) {
f += 1;
x /= 2;
}

/* Initialize the variables. */
v = 1+x
a = x
d = 1

for (i=2; 1; i++) {
e = (a *= x) / (d *= i)
if (e == 0) {
if (f>0) while (f--)  v = v*v;
scale = z
if (m) return (1/v);
return (v/1);
}
v += e
}
}

The following is code that uses the extended features of `bc' to
implement a simple program for calculating checkbook balances.  This
program is best kept in a file so that it can be used many times
without having to retype it at every use.

scale=2
print "\nCheck book program\n!"
print "  Remember, deposits are negative transactions.\n"
print "  Exit by a 0 transaction.\n\n"

print "Initial balance? "; bal = read()
bal /= 1
print "\n"
while (1) {
"current balance = "; bal
if (trans == 0) break;
bal -= trans
bal /= 1
}
quit

The following is the definition of the recursive factorial function.

define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}

```
Info Catalog (bc.info.gz) Functions (bc.info.gz) Top (bc.info.gz) Readline and Libedit Options
automatically generated byinfo2html