code: public static function LOGINV($probability, $mean, $stdDev)
      {
          $probability = Functions::flattenSingleValue($probability);
          $mean = Functions::flattenSingleValue($mean);
          $stdDev = Functions::flattenSingleValue($stdDev);
  
          if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
              if (($probability < 0) || ($probability > 1) || ($stdDev <= 0)) {
                  return Functions::NAN();
              }
  
              return exp($mean + $stdDev * self::NORMSINV($probability));
          }
  
          return Functions::VALUE();
      }
docs: LOGINV.
  
  Returns the inverse of the normal cumulative distribution
  
  @param float $probability
  @param float $mean
  @param float $stdDev
  
  @return float
  
  @todo    Try implementing P J Acklam's refinement algorithm for greater
  accuracy if I can get my head round the mathematics
  (as described at) http://home.online.no/~pjacklam/notes/invnorm/