| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | /*							chdtrl.c * *	Chi-square distribution * * * * SYNOPSIS: * * long double df, x, y, chdtrl(); * * y = chdtrl( 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: * * See igam(). * * ERROR MESSAGES: * *   message         condition      value returned * chdtr domain   x < 0 or v < 1        0.0 *//*							chdtrcl() * *	Complemented Chi-square distribution * * * * SYNOPSIS: * * long double v, x, y, chdtrcl(); * * y = chdtrcl( 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: * * See igamc(). * * ERROR MESSAGES: * *   message         condition      value returned * chdtrc domain  x < 0 or v < 1        0.0 *//*							chdtril() * *	Inverse of complemented Chi-square distribution * * * * SYNOPSIS: * * long double df, x, y, chdtril(); * * x = chdtril( 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: * * See igami.c. * * ERROR MESSAGES: * *   message         condition      value returned * chdtri domain   y < 0 or y > 1        0.0 *                     v < 1 * *//*								chdtr() *//*Cephes Math Library Release 2.3:  March, 1995Copyright 1984, 1995 by Stephen L. Moshier*/#include <math.h>#ifdef ANSIPROTextern long double igamcl ( long double, long double );extern long double igaml ( long double, long double );extern long double igamil ( long double, long double );#elselong double igamcl(), igaml(), igamil();#endiflong double chdtrcl(df,x)long double df, x;{if( (x < 0.0L) || (df < 1.0L) )	{	mtherr( "chdtrcl", DOMAIN );	return(0.0L);	}return( igamcl( 0.5L*df, 0.5L*x ) );}long double chdtrl(df,x)long double df, x;{if( (x < 0.0L) || (df < 1.0L) )	{	mtherr( "chdtrl", DOMAIN );	return(0.0L);	}return( igaml( 0.5L*df, 0.5L*x ) );}long double chdtril( df, y )long double df, y;{long double x;if( (y < 0.0L) || (y > 1.0L) || (df < 1.0L) )	{	mtherr( "chdtril", DOMAIN );	return(0.0L);	}x = igamil( 0.5L * df, y );return( 2.0L * x );}
 |