Lines Matching +full:0 +full:x409
30 SV_NAME_D2 (pow) (0x1.3d2d45bc848acp+63, -0x1.a48a38b40cd43p-12)
31 got 0x1.f7116284221fcp-1
32 want 0x1.f7116284221fdp-1. */
36 #define Off 0x3fe6955500000000
40 #define SignBias (0x800 << V_POW_EXP_TABLE_BITS)
41 #define SmallExp 0x3c9 /* top12(0x1p-54). */
42 #define BigExp 0x408 /* top12(512.). */
43 #define ThresExp 0x03f /* BigExp - SmallExp. */
44 #define HugeExp 0x409 /* top12(1024.). */
47 #define SmallBoundX 0x1p-126
48 #define SmallPowX 0x001 /* top12(0x1p-126). */
49 #define BigPowX 0x7ff /* top12(INFINITY). */
50 #define ThresPowX 0x7fe /* BigPowX - SmallPowX. */
51 #define SmallPowY 0x3be /* top12(0x1.e7b6p-65). */
52 #define BigPowY 0x43e /* top12(0x1.749p62). */
53 #define ThresPowY 0x080 /* BigPowY - SmallPowY. */
62 .log_c0 = -0x1p-1,
63 .log_c1 = -0x1.555555555556p-1,
64 .log_c2 = 0x1.0000000000006p-1,
65 .log_c3 = 0x1.999999959554ep-1,
66 .log_c4 = -0x1.555555529a47ap-1,
67 .log_c5 = -0x1.2495b9b4845e9p0,
68 .log_c6 = 0x1.0002b8b263fc3p0,
70 .exp_c0 = 0x1.fffffffffffd4p-2,
71 .exp_c1 = 0x1.5555571d6ef9p-3,
72 .exp_c2 = 0x1.5555576a5adcep-5,
73 .ln2_hi = 0x1.62e42fefa3800p-1,
74 .ln2_lo = 0x1.ef35793c76730p-45,
75 .n_over_ln2 = 0x1.71547652b82fep0 * N_EXP,
76 .ln2_over_n_hi = 0x1.62e42fefc0000p-9,
77 .ln2_over_n_lo = -0x1.c610ca86c3899p-45,
102 /* Returns 0 if not int, 1 if odd int, 2 if even int. The argument is
107 int e = iy >> 52 & 0x7ff; in checkint()
108 if (e < 0x3ff) in checkint()
109 return 0; in checkint()
110 if (e > 0x3ff + 52) in checkint()
112 if (iy & ((1ULL << (0x3ff + 52 - e)) - 1)) in checkint()
113 return 0; in checkint()
114 if (iy & (1ULL << (0x3ff + 52 - e))) in checkint()
126 /* Returns 1 if input is the bit representation of 0, infinity or nan. */
133 /* Returns 1 if input is the bit representation of 0, infinity or nan. */
152 if ((ki & 0x80000000) == 0) in specialcase()
154 /* k > 0, the exponent of scale might have overflowed by <= 460. */ in specialcase()
157 return 0x1p1009 * (scale + scale * tmp); in specialcase()
159 /* k < 0, need special care in the subnormal range. */ in specialcase()
164 return 0x1p-1022 * y; in specialcase()
175 double sx1 = svclastb (p, 0, x1); in sv_call_specialcase()
176 uint64_t su1 = svclastb (p, 0, u1); in sv_call_specialcase()
177 uint64_t su2 = svclastb (p, 0, u2); in sv_call_specialcase()
218 svfloat64_t t1 = svmla_lane_f64 (logc, kd, ln2_hilo, 0); in sv_log_inline()
226 svfloat64_t ar = svmul_lane_f64 (r, log_c02, 0); in sv_log_inline()
229 /* k*Ln2 + log(c) + r + A[0]*r*r. */ in sv_log_inline()
233 /* p = log1p(r) - r - A[0]*r*r. */ in sv_log_inline()
239 svfloat64_t a34 = svmla_lane_f64 (sv_f64 (d->log_c3), r, log_c46, 0); in sv_log_inline()
259 svfloat64_t z = svmul_lane_f64 (x, n_over_ln2_and_c2, 0); in sv_exp_core()
267 r = svmls_lane_f64 (r, kd, ln2_over_n_hilo, 0); in sv_exp_core()
284 /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there in sv_exp_core()
291 The sign_bias argument is SignBias or 0 and sets the sign to -1 or 1. */
298 svuint64_t abstop = svand_x (pg, sv_top12 (x), 0x7ff); in sv_exp_inline()
299 /* |x| is large (|x| >= 512) or tiny (|x| <= 0x1p-54). */ in sv_exp_inline()
309 /* |x| is tiny (|x| <= 0x1p-54). */ in sv_exp_inline()
311 = svcmpge (pg, svsub_x (pg, abstop, SmallExp), 0x80000000); in sv_exp_inline()
325 svbool_t x_is_neg = svcmplt (pg, x, 0); in sv_exp_inline()
334 = svreinterpret_f64 (svorr_x (pg, sign_mask, 0x3ff0000000000000)); in sv_exp_inline()
349 /* Special cases: |x| or |y| is 0, inf or nan. */ in pow_sc()
352 if (2 * iy == 0) in pow_sc()
385 svbool_t xisneg = svcmplt (pg, x, 0); in SV_NAME_D2()
389 svuint64_t sign_bias = sv_u64 (0); in SV_NAME_D2()
397 vix = svand_m (yint_or_xpos, vix0, 0x7fffffffffffffff); in SV_NAME_D2()
399 sign_bias = svsel (yisodd_xisneg, sv_u64 (SignBias), sv_u64 (0)); in SV_NAME_D2()
402 /* Small cases of x: |x| < 0x1p-126. */ in SV_NAME_D2()
408 svbool_t topx_is_null = svcmpeq (xsmall, vtopx, 0); in SV_NAME_D2()
410 svuint64_t vix_norm = svreinterpret_u64 (svmul_m (xsmall, x, 0x1p52)); in SV_NAME_D2()
411 vix_norm = svand_m (xsmall, vix_norm, 0x7fffffffffffffff); in SV_NAME_D2()
452 SV_POW_INTERVAL2 (0, SHL52 (SmallPowX), 0, inf, 40000)
453 SV_POW_INTERVAL2 (SHL52 (SmallPowX), SHL52 (BigPowX), 0, inf, 40000)
454 SV_POW_INTERVAL2 (SHL52 (BigPowX), inf, 0, inf, 40000)
455 SV_POW_INTERVAL2 (0, inf, 0, SHL52 (SmallPowY), 40000)
456 SV_POW_INTERVAL2 (0, inf, SHL52 (SmallPowY), SHL52 (BigPowY), 40000)
457 SV_POW_INTERVAL2 (0, inf, SHL52 (BigPowY), inf, 40000)
458 SV_POW_INTERVAL2 (0, inf, 0, inf, 1000)
460 SV_POW_INTERVAL2 (0x1p-1, 0x1p1, 0x1p-10, 0x1p10, 10000)
461 SV_POW_INTERVAL2 (0x1.ep-1, 0x1.1p0, 0x1p8, 0x1p16, 10000)
462 SV_POW_INTERVAL2 (0x1p-500, 0x1p500, 0x1p-1, 0x1p1, 10000)
464 SV_POW_INTERVAL2 (0x1p-300, 0x1p-200, 0x1p-20, 0x1p-10, 10000)
465 SV_POW_INTERVAL2 (0x1p50, 0x1p100, 0x1p-20, 0x1p-10, 10000)
477 SV_POW_INTERVAL2 (0.0, 0.0, 0.0, 0x1p120, 1000)
479 TEST_INTERVAL2 (SV_NAME_D2 (pow), 1.0, 1.0, 0.0, 0x1p-50, 1000)
480 TEST_INTERVAL2 (SV_NAME_D2 (pow), 1.0, 1.0, 0x1p-50, 1.0, 1000)
481 TEST_INTERVAL2 (SV_NAME_D2 (pow), 1.0, 1.0, 1.0, 0x1p100, 1000)
482 TEST_INTERVAL2 (SV_NAME_D2 (pow), 1.0, 1.0, -1.0, -0x1p120, 1000)