code: function pgamma(a, s, lowerTail, logp) {
        var f;
  
        logp = logp === true;
        lowerTail = lowerTail !== false;
        f = lowerTail ? gratio.gratio(a) : gratio.gratioc(a);
  
        if (s <= 0 || a < 0 || utils.hasNaN(a, s)) {
           return function(x) { return NaN; };
        }
  
        return function(x) {
           x /= s;
           if (utils.hasNaN(x)) { return NaN; }
           if (a === 0) {
              return utils.adjustLower(x <= 0 ? 0 : 1, lowerTail, logp);
           }
           if (x <= 0) { return utils.adjustLower(0, lowerTail, logp); }
           if (x === Infinity) { return utils.adjustLower(1, lowerTail, logp); }
  
           return utils.adjustLower(f(x), true, logp);
        };
     }
docs: cumulative distribution function a = shape, s = scale (rate = 1 / s) 
  Evaluates the Gamma cumulative distribution
  function at `x` (lower tail probability):
  $$\textrm{pgamma}(a, s)(x) = \frac{1}{s^a\Gamma(a)}\int_0^x t^{a-1}e^{-t/s}dt$$
  
  `lowerTail` defaults to `true`; if `lowerTail` is `false`, returns
  the upper tail probability instead.
  
  `logp` defaults to `false`; if `logp` is `true`, returns the logarithm
  of the result.
  
  Expects $a > 0$, $s > 0$, and $x > 0$.
  
  Based on: *Computation of the Incomplete Gamma Function Ratios and their
  Inverse*, by DiDonato and Morris, 1992
  @fullName pgamma(a, s, lowerTail, logp)(x)
  @memberof gamma