> For the complete documentation index, see [llms.txt](https://johnblommers.gitbook.io/notes-on-prime-numbers/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://johnblommers.gitbook.io/notes-on-prime-numbers/pi_with_bc.md).

# Pi with bc

The arctangent of 1 equals pi/4 so 4\*arctan(1) gives us pi. Let's use the `bc` command to calculate pi to 1000 digits. We control this with the BC\_LINE\_LENGTH environment variable. For ePub documents we want to let the eReader reflow the long line so we increase BC\_LINE\_LENTH beyond 1000 to avoid the backslash character:

```bash
export BC_LINE_LENGTH=4000
echo 'scale=1000 ; 4*a(1)' | bc -l
```

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201988

The backslash is handy for printing output, otherwise the unfolded output continues off the page to the right and ends on Issaquah-Hobart Road. Otherwise we can remove the backslash characters as follows:

```bash
export BC_LINE_LENGTH=100
echo 'scale=1000 ; 4*a(1)' | bc -l | tr '\' ' ' |  tr -d  '\n'
```

The above code replaces the `\` with a space and deletes the `\n` end-of-line character so it still wraps. To get rid of even the space this code suffices:

```bash
export BC_LINE_LENGTH=100
echo 'scale=1000 ; 4*a(1)' | bc -l | tr -d '\'  |  tr -d  '\n'
```

This is the code to produce 10,000 digits of pi printed in four columns rendered as a landscape page in PostScript:

```bash
export BC_LINE_LENGTH=1000000
time echo 'scale=10000 ; 4*a(1)' | bc -l | tee pi.txt
enscript -4 -r -p pi.ps pi.txt
```

The pi.ps file may be viewed using Apple's Preview application.
