docs: function normsinv(p)
  {
      // Coefficients in rational approximations
      var a = new Array(-3.969683028665376e+01, 2.209460984245205e+02,
                        -2.759285104469687e+02, 1.383577518672690e+02,
                        -3.066479806614716e+01, 2.506628277459239e+00);
  
      var b = new Array(-5.447609879822406e+01, 1.615858368580409e+02,
                        -1.556989798598866e+02, 6.680131188771972e+01,
                        -1.328068155288572e+01);
  
      var c = new Array(-7.784894002430293e-03, -3.223964580411365e-01,
                        -2.400758277161838e+00, -2.549732539343734e+00,
                        4.374664141464968e+00, 2.938163982698783e+00);
  
      var d = new Array(7.784695709041462e-03, 3.224671290700398e-01,
                         2.445134137142996e+00, 3.754408661907416e+00);
  
      // Define break-points.
      var plow = 0.02425;
      var phigh = 1 - plow;
  
      // Rational approximation for lower region:
      if (p < plow)
      {
          var q = Math.sqrt(-2 * Math.log(p));
          return (((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) / ((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1);
      }
  
      // Rational approximation for upper region:
      if (phigh < p)
      {
          var q = Math.sqrt(-2 * Math.log(1 - p));
          return -(((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) / ((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1);
      }
  
      // Rational approximation for central region:
      var q = p - 0.5;
      var r = q * q;
      return (((((a[0] * r + a[1]) * r + a[2]) * r + a[3]) * r + a[4]) * r + a[5]) * q / (((((b[0] * r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1);
  }