| 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; |