home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / math / cephes / cprob / chdtr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-17  |  3.3 KB  |  198 lines

  1. /*                            chdtr.c
  2.  *
  3.  *    Chi-square distribution
  4.  *
  5.  *
  6.  *
  7.  * SYNOPSIS:
  8.  *
  9.  * double df, x, y, chdtr();
  10.  *
  11.  * y = chdtr( df, x );
  12.  *
  13.  *
  14.  *
  15.  * DESCRIPTION:
  16.  *
  17.  * Returns the area under the left hand tail (from 0 to x)
  18.  * of the Chi square probability density function with
  19.  * v degrees of freedom.
  20.  *
  21.  *
  22.  *                                  inf.
  23.  *                                    -
  24.  *                        1          | |  v/2-1  -t/2
  25.  *  P( x | v )   =   -----------     |   t      e     dt
  26.  *                    v/2  -       | |
  27.  *                   2    | (v/2)   -
  28.  *                                   x
  29.  *
  30.  * where x is the Chi-square variable.
  31.  *
  32.  * The incomplete gamma integral is used, according to the
  33.  * formula
  34.  *
  35.  *    y = chdtr( v, x ) = igam( v/2.0, x/2.0 ).
  36.  *
  37.  *
  38.  * The arguments must both be positive.
  39.  *
  40.  *
  41.  *
  42.  * ACCURACY:
  43.  *
  44.  * See igam().
  45.  *
  46.  * ERROR MESSAGES:
  47.  *
  48.  *   message         condition      value returned
  49.  * chdtr domain   x < 0 or v < 1        0.0
  50.  */
  51. /*                            chdtrc()
  52.  *
  53.  *    Complemented Chi-square distribution
  54.  *
  55.  *
  56.  *
  57.  * SYNOPSIS:
  58.  *
  59.  * double v, x, y, chdtrc();
  60.  *
  61.  * y = chdtrc( v, x );
  62.  *
  63.  *
  64.  *
  65.  * DESCRIPTION:
  66.  *
  67.  * Returns the area under the right hand tail (from x to
  68.  * infinity) of the Chi square probability density function
  69.  * with v degrees of freedom:
  70.  *
  71.  *
  72.  *                                  inf.
  73.  *                                    -
  74.  *                        1          | |  v/2-1  -t/2
  75.  *  P( x | v )   =   -----------     |   t      e     dt
  76.  *                    v/2  -       | |
  77.  *                   2    | (v/2)   -
  78.  *                                   x
  79.  *
  80.  * where x is the Chi-square variable.
  81.  *
  82.  * The incomplete gamma integral is used, according to the
  83.  * formula
  84.  *
  85.  *    y = chdtr( v, x ) = igamc( v/2.0, x/2.0 ).
  86.  *
  87.  *
  88.  * The arguments must both be positive.
  89.  *
  90.  *
  91.  *
  92.  * ACCURACY:
  93.  *
  94.  * See igamc().
  95.  *
  96.  * ERROR MESSAGES:
  97.  *
  98.  *   message         condition      value returned
  99.  * chdtrc domain  x < 0 or v < 1        0.0
  100.  */
  101. /*                            chdtri()
  102.  *
  103.  *    Inverse of complemented Chi-square distribution
  104.  *
  105.  *
  106.  *
  107.  * SYNOPSIS:
  108.  *
  109.  * double df, x, y, chdtri();
  110.  *
  111.  * x = chdtri( df, y );
  112.  *
  113.  *
  114.  *
  115.  *
  116.  * DESCRIPTION:
  117.  *
  118.  * Finds the Chi-square argument x such that the integral
  119.  * from x to infinity of the Chi-square density is equal
  120.  * to the given cumulative probability y.
  121.  *
  122.  * This is accomplished using the inverse gamma integral
  123.  * function and the relation
  124.  *
  125.  *    x/2 = igami( df/2, y );
  126.  *
  127.  *
  128.  *
  129.  *
  130.  * ACCURACY:
  131.  *
  132.  * See igami.c.
  133.  *
  134.  * ERROR MESSAGES:
  135.  *
  136.  *   message         condition      value returned
  137.  * chdtri domain   y < 0 or y > 1        0.0
  138.  *                     v < 1
  139.  *
  140.  */
  141.  
  142. /*                                chdtr() */
  143.  
  144.  
  145. /*
  146. Cephes Math Library Release 2.0:  April, 1987
  147. Copyright 1984, 1987 by Stephen L. Moshier
  148. Direct inquiries to 30 Frost Street, Cambridge, MA 02140
  149. */
  150.  
  151. #include "mconf.h"
  152.  
  153. double chdtrc(df,x)
  154. double df, x;
  155. {
  156. double igamc();
  157.  
  158. if( (x < 0.0) || (df < 1.0) )
  159.     {
  160.     mtherr( "chdtrc", DOMAIN );
  161.     return(0.0);
  162.     }
  163. return( igamc( df/2.0, x/2.0 ) );
  164. }
  165.  
  166.  
  167.  
  168. double chdtr(df,x)
  169. double df, x;
  170. {
  171. double igam();
  172.  
  173. if( (x < 0.0) || (df < 1.0) )
  174.     {
  175.     mtherr( "chdtr", DOMAIN );
  176.     return(0.0);
  177.     }
  178. return( igam( df/2.0, x/2.0 ) );
  179. }
  180.  
  181.  
  182.  
  183. double chdtri( df, y )
  184. double df, y;
  185. {
  186. double x;
  187. double igami();
  188.  
  189. if( (y < 0.0) || (y > 1.0) || (df < 1.0) )
  190.     {
  191.     mtherr( "chdtri", DOMAIN );
  192.     return(0.0);
  193.     }
  194.  
  195. x = igami( 0.5 * df, y );
  196. return( 2.0 * x );
  197. }
  198.