Average Error: 29.6 → 0.6
Time: 1.2m
Precision: 64
\[\left(e^{x} - 2\right) + e^{-x}\]
\[(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{360}\right) \cdot \left(x \cdot x\right) + \left(\sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*} \cdot \sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*}\right))_*\]
double f(double x) {
        double r9989017 = x;
        double r9989018 = exp(r9989017);
        double r9989019 = 2.0;
        double r9989020 = r9989018 - r9989019;
        double r9989021 = -r9989017;
        double r9989022 = exp(r9989021);
        double r9989023 = r9989020 + r9989022;
        return r9989023;
}

double f(double x) {
        double r9989024 = x;
        double r9989025 = r9989024 * r9989024;
        double r9989026 = r9989025 * r9989025;
        double r9989027 = 0.002777777777777778;
        double r9989028 = r9989026 * r9989027;
        double r9989029 = 0.08333333333333333;
        double r9989030 = fma(r9989026, r9989029, r9989025);
        double r9989031 = sqrt(r9989030);
        double r9989032 = r9989031 * r9989031;
        double r9989033 = fma(r9989028, r9989025, r9989032);
        return r9989033;
}

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

Error

Bits error versus x

Target

Original29.6
Target0.0
Herbie0.6
\[4 \cdot {\left(\sinh \left(\frac{x}{2}\right)\right)}^{2}\]

Derivation

  1. Initial program 29.6

    \[\left(e^{x} - 2\right) + e^{-x}\]
  2. Simplified29.6

    \[\leadsto \color{blue}{\left(e^{x} - 2\right) - \frac{-1}{e^{x}}}\]
  3. Taylor expanded around 0 0.6

    \[\leadsto \color{blue}{{x}^{2} + \left(\frac{1}{12} \cdot {x}^{4} + \frac{1}{360} \cdot {x}^{6}\right)}\]
  4. Simplified0.6

    \[\leadsto \color{blue}{(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{360}\right) \cdot \left(x \cdot x\right) + \left((\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*\right))_*}\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt0.6

    \[\leadsto (\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{360}\right) \cdot \left(x \cdot x\right) + \color{blue}{\left(\sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*} \cdot \sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*}\right)})_*\]
  7. Final simplification0.6

    \[\leadsto (\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{360}\right) \cdot \left(x \cdot x\right) + \left(\sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*} \cdot \sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*}\right))_*\]

Reproduce

herbie shell --seed 2019102 +o rules:numerics
(FPCore (x)
  :name "exp2 (problem 3.3.7)"

  :herbie-target
  (* 4 (pow (sinh (/ x 2)) 2))

  (+ (- (exp x) 2) (exp (- x))))