If your favorite isn’t on the list, I’m sorry…I can only do so much.
One thing to keep in mind about these examples is that most software packages use floating point arithmetic (FPA).
I won’t get into exactly what this means in this post. Just know that FPA will generally result in some rounding errors with highly precise numbers (i.e. lots of decimal places). However, below 16 decimal places, you can be reasonably assured that these packages return the same values.
Note this function does not have any arguments. The value returned is accurate to 14 decimal places.
This returns pi to 6 decimal places. If you need more precision, you can get up to 15 decimal places with the following code (the integer 3, is the 16th digit):
digits option can go as high as 22, but the default R algorithm is only accurate up to 15 decimal places (see http://www.joyofpi.com/pi.html).
For greater precision, I recommend using the
Rmpfr package. I set it to 256-bit precision, and achieved accuracy up to 75 decimal places.
. di c(pi) or . di _pi
As with R, the default precision is 6 decimal places. If you need to increase the precision, you can format the constant for up to 16 decimal places.
.di %19.0g _pi
I know less about the nuances of representing Pi in SAS. But my research in the SAS documentation suggests that pi can be stored with precision above 16 decimal places.
The basic code is:
data _null_; pi=constant('pi'); put pi=; run;
This may be the worst package to use for representing pi, as IBM still has not included pi as a system constant in the program. Instead, we get to make use of our knowledge in trigonometry (did you just cringe? I did.)…
If you dig back far enough in your memory, you might recall that the tangent of (pi/4) =1. Using the inverse tangent function (the arctangent), you can create a variable to represent pi:
compute pi = 4*ARTAN(1).
Hope you find this interesting and useful…Happy Pi Day!