\left(e^{x} - 2\right) + e^{-x}\begin{array}{l}
\mathbf{if}\;x \leq -0.0005096403824734452:\\
\;\;\;\;\frac{\frac{{2}^{4} - \left(2 + \left(e^{x} + \left({\left(e^{x}\right)}^{3} - {2}^{3}\right)\right)\right) \cdot \left(\left(2 + \left(e^{x} + \left({\left(e^{x}\right)}^{3} - {2}^{3}\right)\right)\right) \cdot {\left(e^{x}\right)}^{2}\right)}{2 \cdot 2 - e^{x} \cdot \left(2 + \left(e^{x} + \left({\left(e^{x}\right)}^{3} - {2}^{3}\right)\right)\right)}}{{\left(e^{x}\right)}^{3} + 2 \cdot \left(e^{x} \cdot \left(2 + e^{x}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{\left(x \cdot x\right) \cdot \left(7 + x \cdot 11\right) + {x}^{4} \cdot 11.083333333333334}{{\left(e^{x}\right)}^{3} + 2 \cdot \left(e^{x} \cdot \left(2 + e^{x}\right)\right)}} \cdot \sqrt{\frac{\left(x \cdot x\right) \cdot \left(7 + x \cdot 11\right) + {x}^{4} \cdot 11.083333333333334}{{\left(e^{x}\right)}^{3} + 2 \cdot \left(e^{x} \cdot \left(2 + e^{x}\right)\right)}}\\
\end{array}(FPCore (x) :precision binary64 (+ (- (exp x) 2.0) (exp (- x))))
(FPCore (x)
:precision binary64
(if (<= x -0.0005096403824734452)
(/
(/
(-
(pow 2.0 4.0)
(*
(+ 2.0 (+ (exp x) (- (pow (exp x) 3.0) (pow 2.0 3.0))))
(*
(+ 2.0 (+ (exp x) (- (pow (exp x) 3.0) (pow 2.0 3.0))))
(pow (exp x) 2.0))))
(-
(* 2.0 2.0)
(* (exp x) (+ 2.0 (+ (exp x) (- (pow (exp x) 3.0) (pow 2.0 3.0)))))))
(+ (pow (exp x) 3.0) (* 2.0 (* (exp x) (+ 2.0 (exp x))))))
(*
(sqrt
(/
(+ (* (* x x) (+ 7.0 (* x 11.0))) (* (pow x 4.0) 11.083333333333334))
(+ (pow (exp x) 3.0) (* 2.0 (* (exp x) (+ 2.0 (exp x)))))))
(sqrt
(/
(+ (* (* x x) (+ 7.0 (* x 11.0))) (* (pow x 4.0) 11.083333333333334))
(+ (pow (exp x) 3.0) (* 2.0 (* (exp x) (+ 2.0 (exp x))))))))))double code(double x) {
return ((double) (((double) (((double) exp(x)) - 2.0)) + ((double) exp(((double) -(x))))));
}
double code(double x) {
double tmp;
if ((x <= -0.0005096403824734452)) {
tmp = ((((double) (((double) pow(2.0, 4.0)) - ((double) (((double) (2.0 + ((double) (((double) exp(x)) + ((double) (((double) pow(((double) exp(x)), 3.0)) - ((double) pow(2.0, 3.0)))))))) * ((double) (((double) (2.0 + ((double) (((double) exp(x)) + ((double) (((double) pow(((double) exp(x)), 3.0)) - ((double) pow(2.0, 3.0)))))))) * ((double) pow(((double) exp(x)), 2.0)))))))) / ((double) (((double) (2.0 * 2.0)) - ((double) (((double) exp(x)) * ((double) (2.0 + ((double) (((double) exp(x)) + ((double) (((double) pow(((double) exp(x)), 3.0)) - ((double) pow(2.0, 3.0))))))))))))) / ((double) (((double) pow(((double) exp(x)), 3.0)) + ((double) (2.0 * ((double) (((double) exp(x)) * ((double) (2.0 + ((double) exp(x)))))))))));
} else {
tmp = ((double) (((double) sqrt((((double) (((double) (((double) (x * x)) * ((double) (7.0 + ((double) (x * 11.0)))))) + ((double) (((double) pow(x, 4.0)) * 11.083333333333334)))) / ((double) (((double) pow(((double) exp(x)), 3.0)) + ((double) (2.0 * ((double) (((double) exp(x)) * ((double) (2.0 + ((double) exp(x))))))))))))) * ((double) sqrt((((double) (((double) (((double) (x * x)) * ((double) (7.0 + ((double) (x * 11.0)))))) + ((double) (((double) pow(x, 4.0)) * 11.083333333333334)))) / ((double) (((double) pow(((double) exp(x)), 3.0)) + ((double) (2.0 * ((double) (((double) exp(x)) * ((double) (2.0 + ((double) exp(x)))))))))))))));
}
return tmp;
}




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0.0 |
| Herbie | 0.7 |
if x < -5.09640382473445174e-4Initial program 5.5
rmApplied exp-neg_binary645.6
Applied flip3--_binary645.6
Applied frac-add_binary645.5
Simplified5.3
Simplified5.3
rmApplied flip-+_binary645.3
Simplified5.2
Simplified5.2
if -5.09640382473445174e-4 < x Initial program 30.2
rmApplied exp-neg_binary6430.2
Applied flip3--_binary6430.3
Applied frac-add_binary6430.3
Simplified30.3
Simplified30.3
Taylor expanded around 0 0.6
Simplified0.6
rmApplied add-sqr-sqrt_binary640.6
Simplified0.6
Simplified0.6
Final simplification0.7
herbie shell --seed 2020204
(FPCore (x)
:name "exp2 (problem 3.3.7)"
:precision binary64
:herbie-expected 1.5
:herbie-target
(* 4.0 (pow (sinh (/ x 2.0)) 2.0))
(+ (- (exp x) 2.0) (exp (- x))))