@stdlib/math-base-special-hyp2f1
v0.1.0
Published
Evaluates the Gaussian hypergeometric function.
Readme
Gaussian hypergeometric function
Evaluates the Gaussian hypergeometric function.
The Gaussian hypergeometric function is defined for |x| < 1 by the power series:
and is undefined (or infinite) if c equals a non-positive integer.
Here (q)ₙ is the (rising) Pochhammer symbol, which is defined by:
For |x| >= 1, the function can be analytically continued using functional identities and transformation formulas.
Installation
npm install @stdlib/math-base-special-hyp2f1Usage
var hyp2f1 = require( '@stdlib/math-base-special-hyp2f1' );hyp2f1( a, b, c, x )
Evaluates the Gaussian hypergeometric function.
var v = hyp2f1( 1.0, 1.0, 1.0, 0.0 );
// returns 1.0
v = hyp2f1( 10.0, 7.4, -1.8, -0.99 );
// returns ~0.423
v = hyp2f1( 3.0, 4.0, 7.0, 1.0 );
// returns +Infinity
v = hyp2f1( NaN, 3.0, 2.0, 0.5 );
// returns NaNExamples
var uniform = require( '@stdlib/random-array-uniform' );
var logEachMap = require( '@stdlib/console-log-each-map' );
var hyp2f1 = require( '@stdlib/math-base-special-hyp2f1' );
var opts = {
'dtype': 'float64'
};
var a = uniform( 100, -50.0, 50.0, opts );
var b = uniform( 100, -50.0, 50.0, opts );
var c = uniform( 100, -50.0, 50.0, opts );
var x = uniform( 100, -50.0, 50.0, opts );
logEachMap( 'a: %0.4f, b: %0.4f, c: %0.4f, x: %0.4f, 2F1(a,b;c;x): %0.4f', a, b, c, x, hyp2f1 );C APIs
Usage
#include "stdlib/math/base/special/hyp2f1.h"stdlib_base_hyp2f1( a, b, c, x )
Evaluates the Gaussian hypergeometric function.
double out = stdlib_base_hyp2f1( 1.0, 1.0, 1.0, 0.0 );
// returns 1.0
out = stdlib_base_hyp2f1( 10.0, 7.4, -1.8, -0.99 );
// returns ~0.423The function accepts the following arguments:
- a:
[in] doubleinput value. - b:
[in] doubleinput value. - c:
[in] doubleinput value. - x:
[in] doubleinput value.
double stdlib_base_hyp2f1( const double a, const double b, const double c, const double x );Examples
#include "stdlib/math/base/special/hyp2f1.h"
#include <stdlib.h>
#include <stdio.h>
static double random_uniform( const double min, const double max ) {
double v = (double)rand() / ( (double)RAND_MAX + 1.0 );
return min + ( v*(max-min) );
}
int main( void ) {
double a;
double b;
double c;
double x;
double y;
int i;
for ( i = 0; i < 10; i++ ) {
a = random_uniform( -50.0, 50.0 );
b = random_uniform( -50.0, 50.0 );
c = random_uniform( -50.0, 50.0 );
x = random_uniform( -50.0, 50.0 );
y = stdlib_base_hyp2f1( a, b, c, x );
printf( "a: %lf, b: %lf, c: %lf, x: %lf, 2F1(a,b;c;x): %lf\n", a, b, c, x, y );
}
}Notice
This package is part of stdlib, a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.
Community
License
See LICENSE.
Copyright
Copyright © 2016-2026. The Stdlib Authors.
