public static void NormalCdfRatioTest3() { // x=-2,-4,-8 are good positions for Taylor expansion double x = -4; for (int i = 0; i < 100; i++) { // x=-10: nBase=20,30 is unusually good, nBase=50 doesn't work as well // x=-20: nBase=50 works well // larger x allows larger nBase // x=-8: nBase=100 // x=-6: nBase=10 works well // x=-5: poor // x=-4: nBase=40 // x=-3: poor results for any nBase // x=-2: nBase=100 works well double r2 = MMath.NormalCdfMomentRatioRecurrence2(i, x, 100); double r = MMath.NormalCdfMomentRatioConFrac(i, x); //Console.WriteLine("recurrence = {0}, confrac = {1}", r1, r2); //Console.WriteLine("ncdfmr = {0}, ncdfmr/(i-1)!! = {1}", r, r/DoubleFact(i-1)); //Console.WriteLine("ncdfmr = {0}, ncdfmr*i! = {1}", r, r*MMath.Gamma(i+1)); Console.WriteLine("error = {0}", Math.Abs(r - r2) / Math.Abs(r)); } }