\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \leq -6.4460959501863895 \cdot 10^{-06}:\\
\;\;\;\;\sqrt{\frac{{\left(e^{x}\right)}^{2} - 1}{\frac{{\left(e^{x}\right)}^{2} - 1 \cdot 1}{e^{x} + 1}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{2} + \left(\left(\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt{\sqrt{2}}} \cdot \left(x \cdot \frac{\sqrt[3]{x}}{\sqrt{\sqrt{2}}}\right)\right) \cdot 0.1875 + 0.5 \cdot \frac{x}{\sqrt{2}}\right)\\
\end{array}(FPCore (x) :precision binary64 (sqrt (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0))))
(FPCore (x)
:precision binary64
(if (<= x -6.4460959501863895e-06)
(sqrt
(/
(- (pow (exp x) 2.0) 1.0)
(/ (- (pow (exp x) 2.0) (* 1.0 1.0)) (+ (exp x) 1.0))))
(+
(sqrt 2.0)
(+
(*
(*
(/ (* (cbrt x) (cbrt x)) (sqrt (sqrt 2.0)))
(* x (/ (cbrt x) (sqrt (sqrt 2.0)))))
0.1875)
(* 0.5 (/ x (sqrt 2.0)))))))double code(double x) {
return ((double) sqrt((((double) (((double) exp(((double) (2.0 * x)))) - 1.0)) / ((double) (((double) exp(x)) - 1.0)))));
}
double code(double x) {
double VAR;
if ((x <= -6.4460959501863895e-06)) {
VAR = ((double) sqrt((((double) (((double) pow(((double) exp(x)), 2.0)) - 1.0)) / (((double) (((double) pow(((double) exp(x)), 2.0)) - ((double) (1.0 * 1.0)))) / ((double) (((double) exp(x)) + 1.0))))));
} else {
VAR = ((double) (((double) sqrt(2.0)) + ((double) (((double) (((double) ((((double) (((double) cbrt(x)) * ((double) cbrt(x)))) / ((double) sqrt(((double) sqrt(2.0))))) * ((double) (x * (((double) cbrt(x)) / ((double) sqrt(((double) sqrt(2.0))))))))) * 0.1875)) + ((double) (0.5 * (x / ((double) sqrt(2.0)))))))));
}
return VAR;
}



Bits error versus x
Results
if x < -6.44609595018638952e-6Initial program 0.1
Simplified0.1
rmApplied flip--0.0
Simplified0.0
if -6.44609595018638952e-6 < x Initial program 61.5
Simplified61.1
Taylor expanded around 0 0.6
Simplified0.6
rmApplied add-sqr-sqrt0.6
Applied sqrt-prod0.6
Applied add-cube-cbrt0.6
Applied times-frac0.6
Applied associate-*l*0.6
Simplified0.6
Final simplification0.4
herbie shell --seed 2020198
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0))))