Notes on Prime Numbers
  • Introduction
  • Revision History
  • What Do You Mean Large
  • Enter bc
  • Pi with bc
  • C++
  • Ramanujan's constant
  • The Largest Known Prime
  • The Golden Ratio
  • Random Numbers
Powered by GitBook
On this page

Was this helpful?

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:

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:

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:

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:

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.

PreviousEnter bcNextC++

Last updated 5 years ago

Was this helpful?