예제 #1
0
        public static HighPrecisionPi GetPi(int digits)
        {
            Precision = digits;
            HighPrecisionPi first  = 4 * Atan(5);
            HighPrecisionPi second = Atan(239);

            return(4 * (first - second));
        }
예제 #2
0
        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);
        }