Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Does anybody have a script that I could easily run like:

sh generatepi.sh 10000

where 10000 is the number of generated π (Pi) decimal places.

share|improve this question
7  
For what purpose? If you just need the digits: wolframalpha.com/input/?i=N%5BPi%2C+10000%5D – cYrus Apr 26 '11 at 10:50
up vote 13 down vote accepted

Assuming you have the bc (Bench Calculator) utility on your system, you could use the following command and a bit of good old mathematics to calculate π to 10,000 decimal places:

echo "scale=10000; 4*a(1)" | bc -l

This will probably take quite a while to complete for 10,000 decimal places.

Breaking the command down...

  • scale=10000 - this specifies the number of decimal places to use for the result
  • 4*a(1) - this returns the arctangent of 1 [which equals 45°: 45 x (π/180), or ¼π] then multiplies by 4 to get π.
  • bc -l - pipe the complete function string into the bc utility, -l specifies to load the standard math library that's needed for the arctangent function, a().

To wrap this in a script as you specify in your question, use your favourite editor to write the following and save it as generatepi.sh:

#!/bin/bash
echo "scale=$1; 4*a(1)" | bc -l

Then from a terminal use chmod +x generatepi.sh from the folder you saved the file to, which will give the script execution rights. The syntax is then generatepi.sh [number of places]. Note this uses a very basic way of handling parameters and wouldn't validate the input, so make sure you only pass it positive integers as a parameter.

Most Linux systems should have bc but you may need to install it in some cases (e.g. apt-get on Ubuntu, emerge on Gentoo etc). There is also a port of bc for Windows.

share|improve this answer
    
there's native pi calculators for windows - overclockers use them for stability testing – Journeyman Geek Apr 26 '11 at 13:22
    
~3min on my machine, pretty useless in a script. +1 though for using bc. – cYrus Apr 26 '11 at 13:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .