Lines Matching defs:dx
63 // | output - (10^dx - 1) / dx | < 2^-52.
64 LIBC_INLINE double poly_approx_d(double dx) {
65 // dx^2
66 double dx2 = dx * dx;
68 fputil::multiply_add(dx, 0x1.53524c73cea6ap+1, 0x1.26bb1bbb55516p+1);
70 fputil::multiply_add(dx, 0x1.2bd75cc6afc65p+0, 0x1.0470587aa264cp+1);
79 // | output - 10^(dx) | < 2^-101
80 DoubleDouble poly_approx_dd(const DoubleDouble &dx) {
93 DoubleDouble p = fputil::polyeval(dx, COEFFS[0], COEFFS[1], COEFFS[2],
99 // Return exp(dx) ~ 1 + a0 * dx + a1 * dx^2 + ... + a6 * dx^7
100 // For |dx| < 2^-14:
101 // | output - 10^dx | < 1.5 * 2^-124.
102 Float128 poly_approx_f128(const Float128 &dx) {
114 Float128 p = fputil::polyeval(dx, COEFFS_128[0], COEFFS_128[1], COEFFS_128[2],
128 Float128 dx = fputil::quick_add(
144 Float128 p = poly_approx_f128(dx);
156 // Recalculate dx:
157 // dx = x - k * 2^-12 * log10(2)
162 DoubleDouble dx = fputil::exact_add(t1, t2);
163 dx.lo += t3;
167 DoubleDouble p = poly_approx_dd(dx);
191 // |dx| < 1.5 * 2^-15 + 2^-31 < 2^-14
193 double dx = fputil::multiply_add(kd, MLOG10_2_EXP2_M12_MID, lo_h);
195 double mid_lo = dx * exp_mid.hi;
197 // Approximate (10^dx - 1)/dx ~ 1 + a0*dx + a1*dx^2 + a2*dx^3 + a3*dx^4.
198 double p = poly_approx_d(dx);
365 // |dx| < 1.5 * 2^-15 + 2^-31 < 2^-14
367 double dx = fputil::multiply_add(kd, MLOG10_2_EXP2_M12_MID, lo_h);
383 // (exp_mid.hi + exp_mid.lo) * (1 + dx * P_(dx)) ~
384 // ~ exp_mid.hi + (exp_mid.hi * dx * P_(dx) + exp_mid.lo)
387 double mid_lo = dx * exp_mid.hi;
389 // Approximate (10^dx - 1)/dx ~ 1 + a0*dx + a1*dx^2 + a2*dx^3 + a3*dx^4.
390 double p = poly_approx_d(dx);