Average Error: 4.6 → 0.1
Time: 14.9s
Precision: 64
\[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
\[\sqrt{(\left(\sqrt{e^{x}}\right) \cdot \left(\sqrt{e^{x}}\right) + 1)_*}\]
double f(double x) {
        double r76484 = 2.0;
        double r76485 = x;
        double r76486 = r76484 * r76485;
        double r76487 = exp(r76486);
        double r76488 = 1.0;
        double r76489 = r76487 - r76488;
        double r76490 = exp(r76485);
        double r76491 = r76490 - r76488;
        double r76492 = r76489 / r76491;
        double r76493 = sqrt(r76492);
        return r76493;
}

double f(double x) {
        double r76494 = x;
        double r76495 = exp(r76494);
        double r76496 = sqrt(r76495);
        double r76497 = 1.0;
        double r76498 = fma(r76496, r76496, r76497);
        double r76499 = sqrt(r76498);
        return r76499;
}

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

Error

Bits error versus x

Derivation

  1. Initial program 4.6

    \[\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 add-sqr-sqrt0.1

    \[\leadsto \sqrt{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}} + 1}\]
  5. Applied fma-def0.1

    \[\leadsto \sqrt{\color{blue}{(\left(\sqrt{e^{x}}\right) \cdot \left(\sqrt{e^{x}}\right) + 1)_*}}\]
  6. Final simplification0.1

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

Reproduce

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