Average Error: 29.9 → 0.3
Time: 19.9s
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 r91103 = x;
        double r91104 = exp(r91103);
        double r91105 = 2.0;
        double r91106 = r91104 - r91105;
        double r91107 = -r91103;
        double r91108 = exp(r91107);
        double r91109 = r91106 + r91108;
        return r91109;
}

double f(double x) {
        double r91110 = x;
        double r91111 = -0.03372358286109268;
        bool r91112 = r91110 <= r91111;
        double r91113 = exp(r91110);
        double r91114 = 2.0;
        double r91115 = r91113 - r91114;
        double r91116 = r91115 * r91115;
        double r91117 = -2.0;
        double r91118 = r91110 * r91117;
        double r91119 = exp(r91118);
        double r91120 = r91116 - r91119;
        double r91121 = -r91110;
        double r91122 = exp(r91121);
        double r91123 = r91115 - r91122;
        double r91124 = r91120 / r91123;
        double r91125 = 2.0;
        double r91126 = pow(r91110, r91125);
        double r91127 = 0.002777777777777778;
        double r91128 = 6.0;
        double r91129 = pow(r91110, r91128);
        double r91130 = r91127 * r91129;
        double r91131 = 0.08333333333333333;
        double r91132 = 4.0;
        double r91133 = pow(r91110, r91132);
        double r91134 = r91131 * r91133;
        double r91135 = r91130 + r91134;
        double r91136 = r91126 + r91135;
        double r91137 = r91112 ? r91124 : r91136;
        return r91137;
}

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^{x \cdot -2}}}{\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))))