224 |
|
{ |
225 |
|
double m = 1.0; |
226 |
|
double t, num, denom, avg, wsum; |
227 |
– |
double maxm = orad/rad/CHECKRAD; |
227 |
|
double mlimit[2]; |
228 |
|
int ilimit = 4/TEPS; |
229 |
|
register int i; |
230 |
|
/* iterative search for m */ |
231 |
< |
mlimit[0] = 1.0; mlimit[1] = maxm; |
231 |
> |
mlimit[0] = 1.0; mlimit[1] = orad/rad/CHECKRAD; |
232 |
|
do { |
233 |
|
/* compute grey weighted average */ |
234 |
|
i = 1.25*CHECKRAD*rad*m + .5; |
245 |
|
avg /= wsum; |
246 |
|
/* check threshold */ |
247 |
|
denom = m*m/gausstable[0] - p0/avg; |
248 |
< |
if (denom <= FTINY) /* zero exclusive average */ |
249 |
< |
return(maxm); |
248 |
> |
if (denom <= FTINY) { /* zero exclusive average */ |
249 |
> |
if (m >= mlimit[1]-REPS) |
250 |
> |
break; |
251 |
> |
m = mlimit[1]; |
252 |
> |
continue; |
253 |
> |
} |
254 |
|
num = p0/avg - 1.0; |
255 |
|
if (num < 0.0) num = -num; |
256 |
|
t = num/denom; |