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

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

\end{array}
double f(double x) {
        double r81027 = x;
        double r81028 = exp(r81027);
        double r81029 = 2.0;
        double r81030 = r81028 - r81029;
        double r81031 = -r81027;
        double r81032 = exp(r81031);
        double r81033 = r81030 + r81032;
        return r81033;
}

double f(double x) {
        double r81034 = x;
        double r81035 = -0.038555408130684456;
        bool r81036 = r81034 <= r81035;
        double r81037 = exp(r81034);
        double r81038 = 2.0;
        double r81039 = pow(r81037, r81038);
        double r81040 = 4.0;
        double r81041 = r81039 + r81040;
        double r81042 = -2.0;
        double r81043 = pow(r81037, r81042);
        double r81044 = fma(r81040, r81037, r81043);
        double r81045 = r81041 - r81044;
        double r81046 = 2.0;
        double r81047 = r81037 - r81046;
        double r81048 = -r81034;
        double r81049 = exp(r81048);
        double r81050 = r81047 - r81049;
        double r81051 = r81045 / r81050;
        double r81052 = 0.002777777777777778;
        double r81053 = 6.0;
        double r81054 = pow(r81034, r81053);
        double r81055 = 0.08333333333333333;
        double r81056 = 4.0;
        double r81057 = pow(r81034, r81056);
        double r81058 = r81055 * r81057;
        double r81059 = fma(r81052, r81054, r81058);
        double r81060 = fma(r81034, r81034, r81059);
        double r81061 = r81036 ? r81051 : r81060;
        return r81061;
}

Error

Bits error versus x

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.038555408130684456

    1. Initial program 1.1

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

      \[\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.2

      \[\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}}\]
    5. Taylor expanded around inf 6.6

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

      \[\leadsto \frac{\color{blue}{\left({\left(e^{x}\right)}^{2} + 4\right) - \mathsf{fma}\left(4, e^{x}, {\left(e^{x}\right)}^{-2}\right)}}{\left(e^{x} - 2\right) - e^{-x}}\]

    if -0.038555408130684456 < 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. Simplified0.3

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

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

Reproduce

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

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

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