MCPcopy Create free account
hub / github.com/microsoft/SandDance / cumulativeNormal

Function cumulativeNormal

docs/tests/v2/es6/js/sanddance.js:87057–87097  ·  view source on GitHub ↗
(value, mean, stdev)

Source from the content-addressed store, hash-verified

87055
87056
87057function cumulativeNormal(value, mean, stdev) {
87058 mean = mean || 0;
87059 stdev = stdev == null ? 1 : stdev;
87060 let cd,
87061 z = (value - mean) / stdev,
87062 Z = Math.abs(z);
87063
87064 if (Z > 37) {
87065 cd = 0;
87066 } else {
87067 let sum,
87068 exp = Math.exp(-Z * Z / 2);
87069
87070 if (Z < 7.07106781186547) {
87071 sum = 3.52624965998911e-02 * Z + 0.700383064443688;
87072 sum = sum * Z + 6.37396220353165;
87073 sum = sum * Z + 33.912866078383;
87074 sum = sum * Z + 112.079291497871;
87075 sum = sum * Z + 221.213596169931;
87076 sum = sum * Z + 220.206867912376;
87077 cd = exp * sum;
87078 sum = 8.83883476483184e-02 * Z + 1.75566716318264;
87079 sum = sum * Z + 16.064177579207;
87080 sum = sum * Z + 86.7807322029461;
87081 sum = sum * Z + 296.564248779674;
87082 sum = sum * Z + 637.333633378831;
87083 sum = sum * Z + 793.826512519948;
87084 sum = sum * Z + 440.413735824752;
87085 cd = cd / sum;
87086 } else {
87087 sum = Z + 0.65;
87088 sum = Z + 4 / sum;
87089 sum = Z + 3 / sum;
87090 sum = Z + 2 / sum;
87091 sum = Z + 1 / sum;
87092 cd = exp / sum / 2.506628274631;
87093 }
87094 }
87095
87096 return z > 0 ? 1 - cd : cd;
87097} // Approximation of Probit function using inverse error function.
87098
87099
87100function quantileNormal(p, mean, stdev) {

Callers 1

_defaultFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected