gammincinv

Inverse of incomplete gamma function.

Computes the inverse of the 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

Specifically, for given p and a it finds the x such that p = P(x, a).

The function can also be used to invert the 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

Again, for given p and a the function returns the x which satisfies p = Q(x, a).

Usage

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

gammaincinv( p, s[, upper ] )

Inverts the regularized incomplete gamma function. Contrary to the more commonly used definition, in this implementation the first argument is the probability p and the second argument is the scale factor a. By default, the function inverts the lower regularized incomplete gamma function, P(x,a). To invert the upper function instead, i.e. Q(x,a), set the upper argument to true.

var y = gammaincinv( 0.5, 2.0 );
// returns ~1.678

y = gammaincinv( 0.1, 10.0 );
// returns ~6.221

y = gammaincinv( 0.75, 3.0 );
// returns ~3.92

y = gammaincinv( 0.75, 3.0, true );
// returns ~1.727

If provided NaN as any argument, the function returns NaN.

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

y = gammaincinv( 0.5, NaN );
// returns NaN

If provided a value outside [0,1] for p, the function returns NaN.

var y = gammaincinv( 1.2, 1.0 );
// returns NaN

y = gammaincinv( -0.5, 1.0 );
// returns NaN

Examples

var randu = require( '@stdlib/random/base/randu' );
var gammaincinv = require( '@stdlib/math/base/special/gammaincinv' );

var a;
var i;
var p;

for ( i = 0; i < 100; i++ ) {
    p = randu();
    a = randu() * 50.0;
    console.log( 'p: %d, \t a: %d, \t P^(-1)(p, a): %d', p.toFixed( 4 ), a.toFixed( 4 ), gammaincinv( p, a ).toFixed( 4 ) );
}