# gammainc
> [Incomplete gamma function][incomplete-gamma-function].
Evaluates the regularized lower [incomplete gamma function][incomplete-gamma-function]:
The function can also be used to evaluate the regularized upper incomplete gamma function, which is defined as follows:
The two functions have the relationship `Q(x,a) = 1 - P(x,a)`.
In addition, this routine can be used to evaluate the _unregularized_ gamma functions. The range of above functions is `[0,1]`, which is not the case for the _unregularized_ versions. The unregularized lower incomplete gamma function is defined as
and the upper unregularized incomplete gamma function is
The relationship between the two functions is `Γ(a,x) = γ(a,x) + Γ(a)`.
## Usage
```javascript
var gammainc = require( '@stdlib/math/base/special/gammainc' );
```
#### gammainc( x, s\[, regularized\[, upper ]] )
By default, evaluates the regularized lower [incomplete gamma function][incomplete-gamma-function] for inputs `x` and `s`. The third and fourth parameters of the function can be used to specify whether instead to evaluate the non-regularized and/or upper incomplete gamma functions, respectively.
```javascript
var y = gammainc( 6.0, 2.0 );
// returns ~0.9826
y = gammainc( 1.0, 2.0, true, true );
// returns ~0.7358
y = gammainc( 7.0, 5.0 );
// returns ~0.8270
y = gammainc( 7.0, 5.0, false );
// returns ~19.8482
```
If provided `NaN` as any argument, the function returns `NaN`.
```javascript
var y = gammainc( NaN, 1.0 );
// returns NaN
y = gammainc( 1.0, NaN );
// returns NaN
```
If provided a negative `x`, the function returns `NaN`.
```javascript
var y = gammainc( -2.0, 2.0 );
// returns NaN
```
If provided a nonpositive `s`, the function returns `NaN`.
```javascript
var y = gammainc( 2.0, -1.0 );
// returns NaN
y = gammainc( 2.0, 0.0 );
// returns NaN
```
## Examples
```javascript
var randu = require( '@stdlib/random/base/randu' );
var gammainc = require( '@stdlib/math/base/special/gammainc' );
var i;
var x;
var s;
for ( i = 0; i < 100; i++ ) {
x = randu() * 10.0;
s = randu() * 10.0;
console.log( 'x: %d, \t s: %d, \t f(x,s): %d', x.toFixed( 4 ), s.toFixed( 4 ), gammainc( x, s ).toFixed( 4 ) );
}
```
[incomplete-gamma-function]: https://en.wikipedia.org/wiki/Incomplete_gamma_function