Average Error: 29.9 → 0.3
Time: 18.5s
Precision: 64
\[\left(e^{x} - 2\right) + e^{-x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.03372358286109267827557189889375877100974:\\ \;\;\;\;\frac{\left(e^{x} - 2\right) \cdot \left(e^{x} - 2\right) - e^{x \cdot -2}}{\left(e^{x} - 2\right) - e^{-x}}\\ \mathbf{else}:\\ \;\;\;\;{x}^{2} + \left(\frac{1}{360} \cdot {x}^{6} + \frac{1}{12} \cdot {x}^{4}\right)\\ \end{array}\]
\left(e^{x} - 2\right) + e^{-x}
\begin{array}{l}
\mathbf{if}\;x \le -0.03372358286109267827557189889375877100974:\\
\;\;\;\;\frac{\left(e^{x} - 2\right) \cdot \left(e^{x} - 2\right) - e^{x \cdot -2}}{\left(e^{x} - 2\right) - e^{-x}}\\

\mathbf{else}:\\
\;\;\;\;{x}^{2} + \left(\frac{1}{360} \cdot {x}^{6} + \frac{1}{12} \cdot {x}^{4}\right)\\

\end{array}
double f(double x) {
        double r134207 = x;
        double r134208 = exp(r134207);
        double r134209 = 2.0;
        double r134210 = r134208 - r134209;
        double r134211 = -r134207;
        double r134212 = exp(r134211);
        double r134213 = r134210 + r134212;
        return r134213;
}

double f(double x) {
        double r134214 = x;
        double r134215 = -0.03372358286109268;
        bool r134216 = r134214 <= r134215;
        double r134217 = exp(r134214);
        double r134218 = 2.0;
        double r134219 = r134217 - r134218;
        double r134220 = r134219 * r134219;
        double r134221 = -2.0;
        double r134222 = r134214 * r134221;
        double r134223 = exp(r134222);
        double r134224 = r134220 - r134223;
        double r134225 = -r134214;
        double r134226 = exp(r134225);
        double r134227 = r134219 - r134226;
        double r134228 = r134224 / r134227;
        double r134229 = 2.0;
        double r134230 = pow(r134214, r134229);
        double r134231 = 0.002777777777777778;
        double r134232 = 6.0;
        double r134233 = pow(r134214, r134232);
        double r134234 = r134231 * r134233;
        double r134235 = 0.08333333333333333;
        double r134236 = 4.0;
        double r134237 = pow(r134214, r134236);
        double r134238 = r134235 * r134237;
        double r134239 = r134234 + r134238;
        double r134240 = r134230 + r134239;
        double r134241 = r134216 ? r134228 : r134240;
        return r134241;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -0.03372358286109268

    1. Initial program 1.3

      \[\left(e^{x} - 2\right) + e^{-x}\]
    2. Using strategy rm
    3. Applied flip-+6.4

      \[\leadsto \color{blue}{\frac{\left(e^{x} - 2\right) \cdot \left(e^{x} - 2\right) - e^{-x} \cdot e^{-x}}{\left(e^{x} - 2\right) - e^{-x}}}\]
    4. Simplified6.3

      \[\leadsto \frac{\color{blue}{\left(e^{x} - 2\right) \cdot \left(e^{x} - 2\right) - e^{-2 \cdot x}}}{\left(e^{x} - 2\right) - e^{-x}}\]

    if -0.03372358286109268 < x

    1. Initial program 30.1

      \[\left(e^{x} - 2\right) + e^{-x}\]
    2. Taylor expanded around 0 0.3

      \[\leadsto \color{blue}{{x}^{2} + \left(\frac{1}{360} \cdot {x}^{6} + \frac{1}{12} \cdot {x}^{4}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.03372358286109267827557189889375877100974:\\ \;\;\;\;\frac{\left(e^{x} - 2\right) \cdot \left(e^{x} - 2\right) - e^{x \cdot -2}}{\left(e^{x} - 2\right) - e^{-x}}\\ \mathbf{else}:\\ \;\;\;\;{x}^{2} + \left(\frac{1}{360} \cdot {x}^{6} + \frac{1}{12} \cdot {x}^{4}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019323 
(FPCore (x)
  :name "exp2 (problem 3.3.7)"
  :precision binary64

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

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