96 |
} |
} |
97 |
|
|
98 |
double |
double |
99 |
gsl_cdf_ugaussian_Pinv (double p) |
gsl_cdf_ugaussian_Pinv (double P) |
100 |
{ |
{ |
101 |
double r, x, pp; |
double r, x, pp; |
102 |
|
|
103 |
double dp = p - 0.5; |
double dP = P - 0.5; |
104 |
|
|
105 |
if (p == 1.0) |
if (P == 1.0) |
106 |
{ |
{ |
107 |
return GSL_POSINF; |
return GSL_POSINF; |
108 |
} |
} |
109 |
else if (p == 0.0) |
else if (P == 0.0) |
110 |
{ |
{ |
111 |
return GSL_NEGINF; |
return GSL_NEGINF; |
112 |
} |
} |
113 |
|
|
114 |
if (fabs (dp) <= 0.425) |
if (fabs (dP) <= 0.425) |
115 |
{ |
{ |
116 |
x = small (dp); |
x = small (dP); |
117 |
|
|
118 |
return x; |
return x; |
119 |
} |
} |
120 |
|
|
121 |
pp = (p < 0.5) ? p : 1.0 - p; |
pp = (P < 0.5) ? P : 1.0 - P; |
122 |
|
|
123 |
r = sqrt (-log (pp)); |
r = sqrt (-log (pp)); |
124 |
|
|
131 |
x = tail (r); |
x = tail (r); |
132 |
} |
} |
133 |
|
|
134 |
if (p < 0.5) |
if (P < 0.5) |
135 |
{ |
{ |
136 |
return -x; |
return -x; |
137 |
} |
} |
143 |
} |
} |
144 |
|
|
145 |
double |
double |
146 |
gsl_cdf_ugaussian_Qinv (double p) |
gsl_cdf_ugaussian_Qinv (double Q) |
147 |
{ |
{ |
148 |
double r, x, pp; |
double r, x, pp; |
149 |
|
|
150 |
double dp = p - 0.5; |
double dQ = Q - 0.5; |
151 |
|
|
152 |
if (p == 1.0) |
if (Q == 1.0) |
153 |
{ |
{ |
154 |
return GSL_NEGINF; |
return GSL_NEGINF; |
155 |
} |
} |
156 |
else if (p == 0.0) |
else if (Q == 0.0) |
157 |
{ |
{ |
158 |
return GSL_POSINF; |
return GSL_POSINF; |
159 |
} |
} |
160 |
|
|
161 |
if (fabs (dp) <= 0.425) |
if (fabs (dQ) <= 0.425) |
162 |
{ |
{ |
163 |
x = small (dp); |
x = small (dQ); |
164 |
|
|
165 |
return -x; |
return -x; |
166 |
} |
} |
167 |
|
|
168 |
pp = (p < 0.5) ? p : 1.0 - p; |
pp = (Q < 0.5) ? Q : 1.0 - Q; |
169 |
|
|
170 |
r = sqrt (-log (pp)); |
r = sqrt (-log (pp)); |
171 |
|
|
178 |
x = tail (r); |
x = tail (r); |
179 |
} |
} |
180 |
|
|
181 |
if (p < 0.5) |
if (Q < 0.5) |
182 |
{ |
{ |
183 |
return x; |
return x; |
184 |
} |
} |
187 |
return -x; |
return -x; |
188 |
} |
} |
189 |
} |
} |
190 |
|
|
191 |
|
|
192 |
|
double |
193 |
|
gsl_cdf_gaussian_Pinv (const double P, const double sigma) |
194 |
|
{ |
195 |
|
return gsl_cdf_ugaussian_Pinv (x / sigma); |
196 |
|
} |
197 |
|
|
198 |
|
double |
199 |
|
gsl_cdf_gaussian_Qinv (const double Q, const double sigma) |
200 |
|
{ |
201 |
|
return gsl_cdf_ugaussian_Qinv (x / sigma); |
202 |
|
} |