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 #include "cephes.h"
153
chdtrc(df,x)154 double chdtrc(df,x)
155 double df, x;
156 {
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
chdtr(df,x)168 double chdtr(df,x)
169 double df, x;
170 {
171
172 if( (x < 0.0) || (df < 1.0) )
173 {
174 mtherr( "chdtr", DOMAIN );
175 return(0.0);
176 }
177 return( igam( df/2.0, x/2.0 ) );
178 }
179
180
181
chdtri(df,y)182 double chdtri( df, y )
183 double df, y;
184 {
185 double x;
186
187 if( (y < 0.0) || (y > 1.0) || (df < 1.0) )
188 {
189 mtherr( "chdtri", DOMAIN );
190 return(0.0);
191 }
192
193 x = igami( 0.5 * df, y );
194 return( 2.0 * x );
195 }
196