Inverse of incomplete gamma function.
Computes the inverse of the lower incomplete gamma function
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:
Again, for given p and a the function returns the x which satisfies p = Q(x, a).
var gammaincinv = require( '@stdlib/math/base/special/gammaincinv' );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.727If provided NaN as any argument, the function returns NaN.
var y = gammaincinv( NaN, 1.0 );
// returns NaN
y = gammaincinv( 0.5, NaN );
// returns NaNIf 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 NaNvar uniform = require( '@stdlib/random/array/uniform' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var gammaincinv = require( '@stdlib/math/base/special/gammaincinv' );
var opts = {
'dtype': 'float64'
};
var p = uniform( 100, 0.0, 1.0, opts );
var a = uniform( 100, 0.0, 50.0, opts );
logEachMap( 'p: %0.4f, \t a: %0.4f, \t P^(-1)(p, a): %0.4f', p, a, gammaincinv );
#include "stdlib/math/base/special/gammaincinv.h"
#include
double stdlib_base_special_gammaincinv( const double p, const double a, const bool upper )
Inverts the lower incomplete gamma function.
double y = stdlib_base_special_gammaincinv( 0.5, 1.0, false );
// returns ~0.693
y = stdlib_base_special_gammaincinv( 0.1, 1.0, true );
// returns ~2.303
The function accepts the following arguments:
- p:
[in] doubleprobability value. - a:
[in] doublescale parameter. - upper:
[in] boolboolean indicating if the function should invert the upper tail of the incomplete gamma function instead.
double stdlib_base_special_gammaincinv( const double p, const double a, const bool upper );
$ stdlib repl
> #include "stdlib/math/base/special/gammaincinv.h"
> #include
>
> double y = stdlib_base_special_gammaincinv( 0.8, 2.0, false );
> printf( "y = %f\n", y );
> // => y = 1.213038...
@stdlib/math/base/special/gamma: gamma function.@stdlib/math/base/special/gamma1pm1: compute gamma(x+1) - 1.@stdlib/math/base/special/gammainc: incomplete gamma function.@stdlib/math/base/special/gammaln: natural logarithm of the gamma function.