Lines Matching +full:0 +full:xd
26 #define OFF 0x3f330000
43 top = tmp & 0xff800000;
56 y = A[0] * r + A[1];
72 (in case of fast toint intrinsics) or not. The unscaled xd must be
75 exp2_inline (double_t xd, uint32_t sign_bias)
84 kd = roundtoint (xd); /* k */
85 ki = converttoint (xd);
90 kd = eval_as_double (xd + SHIFT);
94 r = xd - kd;
101 z = C[0] * r + C[1];
109 /* Returns 0 if not int, 1 if odd int, 2 if even int. The argument is
114 int e = iy >> 23 & 0xff;
115 if (e < 0x7f)
116 return 0;
117 if (e > 0x7f + 23)
119 if (iy & ((1 << (0x7f + 23 - e)) - 1))
120 return 0;
121 if (iy & (1 << (0x7f + 23 - e)))
129 return 2 * ix - 1 >= 2u * 0x7f800000 - 1;
135 uint32_t sign_bias = 0;
140 if (unlikely (ix - 0x00800000 >= 0x7f800000 - 0x00800000 || zeroinfnan (iy)))
142 /* Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan). */
145 if (2 * iy == 0)
147 if (ix == 0x3f800000)
149 if (2 * ix > 2u * 0x7f800000 || 2 * iy > 2u * 0x7f800000)
151 if (2 * ix == 2 * 0x3f800000)
153 if ((2 * ix < 2 * 0x3f800000) == !(iy & 0x80000000))
160 if (ix & 0x80000000 && checkint (iy) == 1)
166 if (2 * ix == 0 && iy & 0x80000000)
171 return iy & 0x80000000 ? opt_barrier_float (1 / x2) : x2;
174 if (ix & 0x80000000)
176 /* Finite x < 0. */
178 if (yint == 0)
182 ix &= 0x7fffffff;
184 if (ix < 0x00800000)
187 ix = asuint (x * 0x1p23f);
188 ix &= 0x7fffffff;
194 if (unlikely ((asuint64 (ylogx) >> 47 & 0xffff)
198 if (ylogx > 0x1.fffffffd1d571p+6 * POWF_SCALE)
199 /* |x^y| > 0x1.ffffffp127. */
202 && ylogx > 0x1.fffffffa3aae2p+6 * POWF_SCALE)
203 /* |x^y| > 0x1.fffffep127, check if we round away from 0. */
205 && eval_as_float (1.0f + opt_barrier_float (0x1p-25f)) != 1.0f)
207 && eval_as_float (-1.0f - opt_barrier_float (0x1p-25f))
226 TEST_INTERVAL2 (powf, 0x1p-1, 0x1p1, 0x1p-7, 0x1p7, 50000)
227 TEST_INTERVAL2 (powf, 0x1p-1, 0x1p1, -0x1p-7, -0x1p7, 50000)
228 TEST_INTERVAL2 (powf, 0x1p-70, 0x1p70, 0x1p-1, 0x1p1, 50000)
229 TEST_INTERVAL2 (powf, 0x1p-70, 0x1p70, -0x1p-1, -0x1p1, 50000)
230 TEST_INTERVAL2 (powf, 0x1.ep-1, 0x1.1p0, 0x1p8, 0x1p14, 50000)
231 TEST_INTERVAL2 (powf, 0x1.ep-1, 0x1.1p0, -0x1p8, -0x1p14, 50000)