\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \le -1.31818012348102291 \cdot 10^{-5}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \sqrt{\mathsf{expm1}\left(\mathsf{log1p}\left(e^{x} + 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(0.5, {x}^{2}, \mathsf{fma}\left(1, x, 2\right)\right)}\\
\end{array}double f(double x) {
double r14090 = 2.0;
double r14091 = x;
double r14092 = r14090 * r14091;
double r14093 = exp(r14092);
double r14094 = 1.0;
double r14095 = r14093 - r14094;
double r14096 = exp(r14091);
double r14097 = r14096 - r14094;
double r14098 = r14095 / r14097;
double r14099 = sqrt(r14098);
return r14099;
}
double f(double x) {
double r14100 = x;
double r14101 = -1.3181801234810229e-05;
bool r14102 = r14100 <= r14101;
double r14103 = 2.0;
double r14104 = r14103 * r14100;
double r14105 = exp(r14104);
double r14106 = 1.0;
double r14107 = r14105 - r14106;
double r14108 = r14100 + r14100;
double r14109 = exp(r14108);
double r14110 = r14106 * r14106;
double r14111 = r14109 - r14110;
double r14112 = r14107 / r14111;
double r14113 = sqrt(r14112);
double r14114 = exp(r14100);
double r14115 = r14114 + r14106;
double r14116 = log1p(r14115);
double r14117 = expm1(r14116);
double r14118 = sqrt(r14117);
double r14119 = r14113 * r14118;
double r14120 = 0.5;
double r14121 = 2.0;
double r14122 = pow(r14100, r14121);
double r14123 = fma(r14106, r14100, r14103);
double r14124 = fma(r14120, r14122, r14123);
double r14125 = sqrt(r14124);
double r14126 = r14102 ? r14119 : r14125;
return r14126;
}



Bits error versus x
if x < -1.3181801234810229e-05Initial program 0.1
rmApplied flip--0.1
Applied associate-/r/0.1
Applied sqrt-prod0.1
Simplified0.0
rmApplied expm1-log1p-u0.0
if -1.3181801234810229e-05 < x Initial program 34.5
Taylor expanded around 0 6.7
Simplified6.7
Final simplification0.9
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))