\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \le -7.26854291605878706 \cdot 10^{-16}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1} \cdot \mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, 1\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 r12878 = 2.0;
double r12879 = x;
double r12880 = r12878 * r12879;
double r12881 = exp(r12880);
double r12882 = 1.0;
double r12883 = r12881 - r12882;
double r12884 = exp(r12879);
double r12885 = r12884 - r12882;
double r12886 = r12883 / r12885;
double r12887 = sqrt(r12886);
return r12887;
}
double f(double x) {
double r12888 = x;
double r12889 = -7.268542916058787e-16;
bool r12890 = r12888 <= r12889;
double r12891 = 2.0;
double r12892 = r12891 * r12888;
double r12893 = exp(r12892);
double r12894 = 1.0;
double r12895 = r12893 - r12894;
double r12896 = r12888 + r12888;
double r12897 = exp(r12896);
double r12898 = r12894 * r12894;
double r12899 = r12897 - r12898;
double r12900 = r12895 / r12899;
double r12901 = exp(r12888);
double r12902 = sqrt(r12901);
double r12903 = fma(r12902, r12902, r12894);
double r12904 = r12900 * r12903;
double r12905 = sqrt(r12904);
double r12906 = 0.5;
double r12907 = 2.0;
double r12908 = pow(r12888, r12907);
double r12909 = fma(r12894, r12888, r12891);
double r12910 = fma(r12906, r12908, r12909);
double r12911 = sqrt(r12910);
double r12912 = r12890 ? r12905 : r12911;
return r12912;
}



Bits error versus x
if x < -7.268542916058787e-16Initial program 0.7
rmApplied flip--0.5
Applied associate-/r/0.5
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied fma-def0.0
if -7.268542916058787e-16 < x Initial program 37.3
Taylor expanded around 0 7.4
Simplified7.4
Final simplification0.7
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))