diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-11-22 14:04:29 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-11-22 14:04:29 +0000 |
commit | 7ce331c01ce6eb7b3f5c715a38a24359da9c6ee2 (patch) | |
tree | 3a7e8476e868ae15f4da1b7ce26b2db6f434468c /libm/float/chdtrf.c | |
parent | c117dd5fb183afb1a4790a6f6110d88704be6bf8 (diff) |
Totally rework the math library, this time based on the MacOs X
math library (which is itself based on the math lib from FreeBSD).
-Erik
Diffstat (limited to 'libm/float/chdtrf.c')
-rw-r--r-- | libm/float/chdtrf.c | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/libm/float/chdtrf.c b/libm/float/chdtrf.c deleted file mode 100644 index 53bd3d961..000000000 --- a/libm/float/chdtrf.c +++ /dev/null @@ -1,210 +0,0 @@ -/* chdtrf.c - * - * Chi-square distribution - * - * - * - * SYNOPSIS: - * - * float df, x, y, chdtrf(); - * - * y = chdtrf( df, x ); - * - * - * - * DESCRIPTION: - * - * Returns the area under the left hand tail (from 0 to x) - * of the Chi square probability density function with - * v degrees of freedom. - * - * - * inf. - * - - * 1 | | v/2-1 -t/2 - * P( x | v ) = ----------- | t e dt - * v/2 - | | - * 2 | (v/2) - - * x - * - * where x is the Chi-square variable. - * - * The incomplete gamma integral is used, according to the - * formula - * - * y = chdtr( v, x ) = igam( v/2.0, x/2.0 ). - * - * - * The arguments must both be positive. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,100 5000 3.2e-5 5.0e-6 - * - * ERROR MESSAGES: - * - * message condition value returned - * chdtrf domain x < 0 or v < 1 0.0 - */ -/* chdtrcf() - * - * Complemented Chi-square distribution - * - * - * - * SYNOPSIS: - * - * float v, x, y, chdtrcf(); - * - * y = chdtrcf( v, x ); - * - * - * - * DESCRIPTION: - * - * Returns the area under the right hand tail (from x to - * infinity) of the Chi square probability density function - * with v degrees of freedom: - * - * - * inf. - * - - * 1 | | v/2-1 -t/2 - * P( x | v ) = ----------- | t e dt - * v/2 - | | - * 2 | (v/2) - - * x - * - * where x is the Chi-square variable. - * - * The incomplete gamma integral is used, according to the - * formula - * - * y = chdtr( v, x ) = igamc( v/2.0, x/2.0 ). - * - * - * The arguments must both be positive. - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,100 5000 2.7e-5 3.2e-6 - * - * ERROR MESSAGES: - * - * message condition value returned - * chdtrc domain x < 0 or v < 1 0.0 - */ -/* chdtrif() - * - * Inverse of complemented Chi-square distribution - * - * - * - * SYNOPSIS: - * - * float df, x, y, chdtrif(); - * - * x = chdtrif( df, y ); - * - * - * - * - * DESCRIPTION: - * - * Finds the Chi-square argument x such that the integral - * from x to infinity of the Chi-square density is equal - * to the given cumulative probability y. - * - * This is accomplished using the inverse gamma integral - * function and the relation - * - * x/2 = igami( df/2, y ); - * - * - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * IEEE 0,100 10000 2.2e-5 8.5e-7 - * - * ERROR MESSAGES: - * - * message condition value returned - * chdtri domain y < 0 or y > 1 0.0 - * v < 1 - * - */ - -/* chdtr() */ - - -/* -Cephes Math Library Release 2.2: July, 1992 -Copyright 1984, 1987, 1992 by Stephen L. Moshier -Direct inquiries to 30 Frost Street, Cambridge, MA 02140 -*/ - -#include <math.h> - -#ifdef ANSIC -float igamcf(float, float), igamf(float, float), igamif(float, float); -#else -float igamcf(), igamf(), igamif(); -#endif - -float chdtrcf(float dff, float xx) -{ -float df, x; - -df = dff; -x = xx; - -if( (x < 0.0) || (df < 1.0) ) - { - mtherr( "chdtrcf", DOMAIN ); - return(0.0); - } -return( igamcf( 0.5*df, 0.5*x ) ); -} - - -float chdtrf(float dff, float xx) -{ -float df, x; - -df = dff; -x = xx; -if( (x < 0.0) || (df < 1.0) ) - { - mtherr( "chdtrf", DOMAIN ); - return(0.0); - } -return( igamf( 0.5*df, 0.5*x ) ); -} - - -float chdtrif( float dff, float yy ) -{ -float y, df, x; - -y = yy; -df = dff; -if( (y < 0.0) || (y > 1.0) || (df < 1.0) ) - { - mtherr( "chdtrif", DOMAIN ); - return(0.0); - } - -x = igamif( 0.5 * df, y ); -return( 2.0 * x ); -} |