gammainc

Incomplete gamma function.

Evaluates the regularized lower incomplete gamma function:

upper P left-parenthesis x comma a right-parenthesis equals StartFraction gamma left-parenthesis a comma x right-parenthesis Over normal upper Gamma left-parenthesis a right-parenthesis EndFraction equals StartFraction 1 Over normal upper Gamma left-parenthesis a right-parenthesis EndFraction integral Subscript 0 Superscript x Baseline t Superscript a minus 1 Baseline e Superscript negative t Baseline d t

The function can also be used to evaluate the regularized upper incomplete gamma function, which is defined as follows:

upper Q left-parenthesis x comma a right-parenthesis equals StartFraction normal upper Gamma left-parenthesis a comma x right-parenthesis Over normal upper Gamma left-parenthesis a right-parenthesis EndFraction equals StartFraction 1 Over normal upper Gamma left-parenthesis a right-parenthesis EndFraction integral Subscript x Superscript normal infinity Baseline t Superscript a minus 1 Baseline e Superscript negative t Baseline d t

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

gamma left-parenthesis a comma x right-parenthesis equals integral Subscript 0 Superscript x Baseline t Superscript a minus 1 Baseline e Superscript negative t Baseline d t

and the upper unregularized incomplete gamma function is

normal upper Gamma left-parenthesis a comma x right-parenthesis equals integral Subscript x Superscript normal infinity Baseline t Superscript a minus 1 Baseline e Superscript negative t Baseline d t

The relationship between the two functions is Γ(a,x) = γ(a,x) + Γ(a).

Usage

var gammainc = require( '@stdlib/math/base/special/gammainc' );

gammainc( x, s[, regularized[, upper ]] )

By default, evaluates the regularized lower 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.

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.

var y = gammainc( NaN, 1.0 );
// returns NaN

y = gammainc( 1.0, NaN );
// returns NaN

If provided a negative x, the function returns NaN.

var y = gammainc( -2.0, 2.0 );
// returns NaN

If provided a nonpositive s, the function returns NaN.

var y = gammainc( 2.0, -1.0 );
// returns NaN

y = gammainc( 2.0, 0.0 );
// returns NaN

Examples

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 ) );
}