public static HighPrecisionPi GetPi(int digits) { Precision = digits; HighPrecisionPi first = 4 * Atan(5); HighPrecisionPi second = Atan(239); return(4 * (first - second)); }
public static HighPrecisionPi Atan(int denominator) { HighPrecisionPi result = new HighPrecisionPi(1, denominator); int xSquared = denominator * denominator; int divisor = 1; HighPrecisionPi term = result; while (!term.IsZero) { divisor += 2; term /= xSquared; result -= term / divisor; divisor += 2; term /= xSquared; result += term / divisor; } return(result); }