code: function ppois(lambda, lowerTail, logp) {
        lowerTail = lowerTail !== false;
        logp = logp === true;
  
        if (!(lambda >= 0)) { return function(x) { return NaN; }; }
  
        return function(x) {
           if (utils.hasNaN(x)) { return NaN; }
           if (x < 0) { return utils.adjustLower(0, lowerTail, logp); }
           if (lambda === 0 || x === Infinity) {
              return utils.adjustLower(1, lowerTail, logp);
           }
  
           return pgamma(Math.floor(x + 1e-10) + 1, 1, !lowerTail, logp)(lambda);
        };
     }
docs: Evaluates the lower-tail cdf at `x` for the Poisson distribution:
  $$\textrm{ppois}(\lambda)(x) = e^{-\lambda} \sum_{i=0}^{\left \lfloor{x}\right \rfloor}\frac{\lambda^i}{i!}$$
  
  Expects $\lambda > 0$.
  
  `lowerTail` defaults to `true`; if `lowerTail` is `false`, returns
  the upper tail probability ($P(X > x)$) instead.
  
  `logp` defaults to `false`; if `logp` is `true`, returns the logarithm
  of the result.
  
  @fullName ppois(lambda, lowerTail, logp)(x)
  @memberof poisson