A game about forced loneliness, made by TACStudios
1using System; 2using static System.Math; 3 4namespace Unity.PerformanceTesting.Statistics 5{ 6 static class NormalDistributionHelper 7 { 8 /// <summary> 9 /// ACM Algorithm 209: Gauss 10 /// 11 /// Calculates $(1/\sqrt{2\pi}) \int_{-\infty}^x e^{-u^2 / 2} du$ 12 /// by means of polynomial approximations due to A. M. Murray of Aberdeen University; 13 /// 14 /// See: http://dl.acm.org/citation.cfm?id=367664 15 /// </summary> 16 /// <param name="x">-infinity..+infinity</param> 17 /// <returns>Area under the Standard Normal Curve from -infinity to x</returns> 18 public static double Gauss(double x) 19 { 20 double z; 21 if (Abs(x) < 1e-9) 22 z = 0.0; 23 else 24 { 25 var y = Abs(x) / 2; 26 if (y >= 3.0) 27 z = 1.0; 28 else if (y < 1.0) 29 { 30 var w = y * y; 31 z = ((((((((0.000124818987 * w - 0.001075204047) * w 32 + 0.005198775019) * w - 0.019198292004) * w 33 + 0.059054035642) * w - 0.151968751364) * w 34 + 0.319152932694) * w - 0.531923007300) * w 35 + 0.797884560593) * y * 2.0; 36 } 37 else 38 { 39 y = y - 2.0; 40 z = (((((((((((((-0.000045255659 * y + 0.000152529290) * y 41 - 0.000019538132) * y - 0.000676904986) * y 42 + 0.001390604284) * y - 0.000794620820) * y 43 - 0.002034254874) * y + 0.006549791214) * y 44 - 0.010557625006) * y + 0.011630447319) * y 45 - 0.009279453341) * y + 0.005353579108) * y 46 - 0.002141268741) * y + 0.000535310849) * y 47 + 0.999936657524; 48 } 49 } 50 51 return x > 0.0 ? (z + 1.0) / 2 : (1.0 - z) / 2; 52 } 53 } 54}