code: public static function POISSON($value, $mean, $cumulative)
      {
          $value = Functions::flattenSingleValue($value);
          $mean = Functions::flattenSingleValue($mean);
  
          if ((is_numeric($value)) && (is_numeric($mean))) {
              if (($value < 0) || ($mean <= 0)) {
                  return Functions::NAN();
              }
              if ((is_numeric($cumulative)) || (is_bool($cumulative))) {
                  if ($cumulative) {
                      $summer = 0;
                      $floor = floor($value);
                      for ($i = 0; $i <= $floor; ++$i) {
                          $summer += pow($mean, $i) / MathTrig::FACT($i);
                      }
  
                      return exp(0 - $mean) * $summer;
                  }
  
                  return (exp(0 - $mean) * pow($mean, $value)) / MathTrig::FACT($value);
              }
          }
  
          return Functions::VALUE();
      }
docs: POISSON.
  
  Returns the Poisson distribution. A common application of the Poisson distribution
  is predicting the number of events over a specific time, such as the number of
  cars arriving at a toll plaza in 1 minute.
  
  @param float $value
  @param float $mean Mean Value
  @param bool $cumulative
  
  @return float