100 |
|
errno = 0; |
101 |
|
va = mf->ep + 4*n; |
102 |
|
coef = evalue(va[0]); |
103 |
< |
if (errno) |
103 |
> |
if (errno == EDOM || errno == ERANGE) |
104 |
|
goto computerr; |
105 |
|
if (coef <= FTINY || rayorigin(&nr, r, TRANS, coef) < 0) |
106 |
|
return(0); |
107 |
|
va++; /* compute direction */ |
108 |
|
for (j = 0; j < 3; j++) { |
109 |
|
nr.rdir[j] = evalue(va[j]); |
110 |
< |
if (errno) |
110 |
> |
if (errno == EDOM || errno == ERANGE) |
111 |
|
goto computerr; |
112 |
|
} |
113 |
|
if (mf->f != &unitxf) |
178 |
|
errno = 0; |
179 |
|
va = mf->ep + 4*n; |
180 |
|
coef = evalue(va[0]); |
181 |
< |
if (errno) |
181 |
> |
if (errno == EDOM || errno == ERANGE) |
182 |
|
goto computerr; |
183 |
|
if (coef <= FTINY) |
184 |
|
return(0); /* insignificant */ |
185 |
|
va++; |
186 |
|
for (i = 0; i < 3; i++) { |
187 |
|
newdir[i] = evalue(va[i]); |
188 |
< |
if (errno) |
188 |
> |
if (errno == EDOM || errno == ERANGE) |
189 |
|
goto computerr; |
190 |
|
} |
191 |
|
if (mf->f != &unitxf) |
203 |
|
pm[i][j] += nv[i]*h[j]; |
204 |
|
pm[3][j] = -od*h[j]; |
205 |
|
} |
206 |
< |
if (newdot > 0.0 ^ olddot > 0.0) /* add mirroring */ |
206 |
> |
if ((newdot > 0.0) ^ (olddot > 0.0)) /* add mirroring */ |
207 |
|
for (j = 0; j < 3; j++) { |
208 |
|
for (i = 0; i < 3; i++) |
209 |
|
pm[i][j] -= 2.*nv[i]*nv[j]; |