Average Error: 4.4 → 0.1
Time: 33.9s
Precision: 64
\[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
\[\sqrt{(e^{\log_* (1 + \left(e^{x} + 1\right))} - 1)^*}\]
double f(double x) {
        double r836271 = 2.0;
        double r836272 = x;
        double r836273 = r836271 * r836272;
        double r836274 = exp(r836273);
        double r836275 = 1.0;
        double r836276 = r836274 - r836275;
        double r836277 = exp(r836272);
        double r836278 = r836277 - r836275;
        double r836279 = r836276 / r836278;
        double r836280 = sqrt(r836279);
        return r836280;
}

double f(double x) {
        double r836281 = x;
        double r836282 = exp(r836281);
        double r836283 = 1.0;
        double r836284 = r836282 + r836283;
        double r836285 = log1p(r836284);
        double r836286 = expm1(r836285);
        double r836287 = sqrt(r836286);
        return r836287;
}

\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}
\sqrt{(e^{\log_* (1 + \left(e^{x} + 1\right))} - 1)^*}

Error

Bits error versus x

Derivation

  1. Initial program 4.4

    \[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\sqrt{e^{x} + 1}}\]
  3. Using strategy rm
  4. Applied expm1-log1p-u0.1

    \[\leadsto \sqrt{\color{blue}{(e^{\log_* (1 + \left(e^{x} + 1\right))} - 1)^*}}\]
  5. Final simplification0.1

    \[\leadsto \sqrt{(e^{\log_* (1 + \left(e^{x} + 1\right))} - 1)^*}\]

Reproduce

herbie shell --seed 2019102 +o rules:numerics
(FPCore (x)
  :name "sqrtexp (problem 3.4.4)"
  (sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))