Lines Matching defs:hi

112 Float128 exp2_f128(double x, int hi, int idx1, int idx2) {
117 fputil::quick_add(Float128(EXP2_MID1[idx1].hi),
122 fputil::quick_add(Float128(EXP2_MID2[idx2].hi),
132 r.exponent += hi;
161 int hi = k >> 12;
163 DoubleDouble exp_mid1{EXP2_MID1[idx1].mid, EXP2_MID1[idx1].hi};
164 DoubleDouble exp_mid2{EXP2_MID2[idx2].mid, EXP2_MID2[idx2].hi};
170 double mid_lo = dx * exp_mid.hi;
177 if (auto r = ziv_test_denorm(hi, exp_mid.hi, lo, ERR_D);
184 if (auto r = ziv_test_denorm(hi, r_dd.hi, r_dd.lo, ERR_DD);
189 Float128 r_f128 = exp2_f128(dx, hi, idx1, idx2);
266 // Let x = (hi + mid1 + mid2) + lo
268 // hi is an integer
272 // 2^(x) = 2^hi * 2^(mid1) * 2^(mid2) * 2^(lo).
274 // - multiplying by 2^hi is exact and cheap, simply by adding the exponent
279 // We compute (hi + mid1 + mid2) together by perform the rounding on x * 2^12.
328 int hi = k >> 12;
330 DoubleDouble exp_mid1{EXP2_MID1[idx1].mid, EXP2_MID1[idx1].hi};
331 DoubleDouble exp_mid2{EXP2_MID2[idx2].mid, EXP2_MID2[idx2].hi};
348 // 2^(mid1 + mid2) ~ exp_mid.hi + exp_mid.lo,
350 // (exp_mid.hi + exp_mid.lo) * (1 + dx * P_(dx)) ~
351 // ~ exp_mid.hi + (exp_mid.hi * dx * P_(dx) + exp_mid.lo)
354 double mid_lo = dx * exp_mid.hi;
361 double upper = exp_mid.hi + (lo + ERR_D);
362 double lower = exp_mid.hi + (lo - ERR_D);
365 // To multiply by 2^hi, a fast way is to simply add hi to the exponent
367 int64_t exp_hi = static_cast<int64_t>(hi) << FPBits::FRACTION_LEN;
375 double upper_dd = r_dd.hi + (r_dd.lo + ERR_DD);
376 double lower_dd = r_dd.hi + (r_dd.lo - ERR_DD);
379 // To multiply by 2^hi, a fast way is to simply add hi to the exponent
381 int64_t exp_hi = static_cast<int64_t>(hi) << FPBits::FRACTION_LEN;
387 Float128 r_f128 = exp2_f128(dx, hi, idx1, idx2);