200 res0 += (DONE - res0_hi * res0 - res0_lo * res0) * dres0; \
201 res0 = sqrt ( res0 ); \
202 \
203 res0 = D2ON1022 * res0; \
204 RETURN (I, res0) \
205 } \
206 j0 = hy##I - (diff0 & j0); \
207 j0 &= 0x7ff00000; \
208 HI(&scl##I) = 0x7ff00000 - j0;
209
210 void
211 __vrhypot( int n, double * restrict px, int stridex, double * restrict py,
212 int stridey, double * restrict pz, int stridez )
213 {
214 int i = 0;
215 double x, y;
216 double x_hi0, x_lo0, y_hi0, y_lo0, scl0 = 0;
217 double x0, y0, res0, dd0;
218 double res0_hi,res0_lo, dres0;
219 double x_hi1, x_lo1, y_hi1, y_lo1, scl1 = 0;
220 double x1, y1, res1, dd1;
221 double res1_hi,res1_lo, dres1;
222 double x_hi2, x_lo2, y_hi2, y_lo2, scl2 = 0;
223 double x2, y2, res2, dd2;
224 double res2_hi,res2_lo, dres2;
225
226 int hx0, hy0, j0, diff0;
227 int iarr0, iexp0, itbl0;
228 int hx1, hy1;
229 int iarr1, iexp1, itbl1;
230 int hx2, hy2;
231 int iarr2, iexp2, itbl2;
232
233 int lx, ly;
234
235 double DONE = ((double*)LCONST)[0];
236 double DTWO = ((double*)LCONST)[1];
237 double D2ON36 = ((double*)LCONST)[2];
238 double D2ON1022 = ((double*)LCONST)[3];
239 double D2ONM52 = ((double*)LCONST)[4];
240
241 double *pz0, *pz1, *pz2;
242
243 do
244 {
245 start0:
246 PREP(0)
247 px += stridex;
248 py += stridey;
249 pz += stridez;
250 i = 1;
251 if ( --n <= 0 )
252 break;
253
254 start1:
255 PREP(1)
256 px += stridex;
257 py += stridey;
258 pz += stridez;
259 i = 2;
260 if ( --n <= 0 )
261 break;
|
200 res0 += (DONE - res0_hi * res0 - res0_lo * res0) * dres0; \
201 res0 = sqrt ( res0 ); \
202 \
203 res0 = D2ON1022 * res0; \
204 RETURN (I, res0) \
205 } \
206 j0 = hy##I - (diff0 & j0); \
207 j0 &= 0x7ff00000; \
208 HI(&scl##I) = 0x7ff00000 - j0;
209
210 void
211 __vrhypot( int n, double * restrict px, int stridex, double * restrict py,
212 int stridey, double * restrict pz, int stridez )
213 {
214 int i = 0;
215 double x, y;
216 double x_hi0, x_lo0, y_hi0, y_lo0, scl0 = 0;
217 double x0, y0, res0, dd0;
218 double res0_hi,res0_lo, dres0;
219 double x_hi1, x_lo1, y_hi1, y_lo1, scl1 = 0;
220 double x1 = 0.0L, y1 = 0.0L, res1, dd1;
221 double res1_hi,res1_lo, dres1;
222 double x_hi2, x_lo2, y_hi2, y_lo2, scl2 = 0;
223 double x2, y2, res2, dd2;
224 double res2_hi,res2_lo, dres2;
225
226 int hx0, hy0, j0, diff0;
227 int iarr0, iexp0, itbl0;
228 int hx1, hy1;
229 int iarr1, iexp1, itbl1;
230 int hx2, hy2;
231 int iarr2, iexp2, itbl2;
232
233 int lx, ly;
234
235 double DONE = ((double*)LCONST)[0];
236 double DTWO = ((double*)LCONST)[1];
237 double D2ON36 = ((double*)LCONST)[2];
238 double D2ON1022 = ((double*)LCONST)[3];
239 double D2ONM52 = ((double*)LCONST)[4];
240
241 double *pz0, *pz1 = 0, *pz2;
242
243 do
244 {
245 start0:
246 PREP(0)
247 px += stridex;
248 py += stridey;
249 pz += stridez;
250 i = 1;
251 if ( --n <= 0 )
252 break;
253
254 start1:
255 PREP(1)
256 px += stridex;
257 py += stridey;
258 pz += stridez;
259 i = 2;
260 if ( --n <= 0 )
261 break;
|