\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;\frac{e^{2 \cdot x} - 1}{e^{x} - 1} \le 1.526510699119073584655708153465560925624 \cdot 10^{108}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{\frac{e^{x + x} - 1 \cdot 1}{e^{x} + 1}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.5, x, 1\right), 2\right)}\\
\end{array}double f(double x) {
double r22723 = 2.0;
double r22724 = x;
double r22725 = r22723 * r22724;
double r22726 = exp(r22725);
double r22727 = 1.0;
double r22728 = r22726 - r22727;
double r22729 = exp(r22724);
double r22730 = r22729 - r22727;
double r22731 = r22728 / r22730;
double r22732 = sqrt(r22731);
return r22732;
}
double f(double x) {
double r22733 = 2.0;
double r22734 = x;
double r22735 = r22733 * r22734;
double r22736 = exp(r22735);
double r22737 = 1.0;
double r22738 = r22736 - r22737;
double r22739 = exp(r22734);
double r22740 = r22739 - r22737;
double r22741 = r22738 / r22740;
double r22742 = 1.5265106991190736e+108;
bool r22743 = r22741 <= r22742;
double r22744 = r22734 + r22734;
double r22745 = exp(r22744);
double r22746 = r22737 * r22737;
double r22747 = r22745 - r22746;
double r22748 = r22739 + r22737;
double r22749 = r22747 / r22748;
double r22750 = r22738 / r22749;
double r22751 = sqrt(r22750);
double r22752 = 0.5;
double r22753 = fma(r22752, r22734, r22737);
double r22754 = fma(r22734, r22753, r22733);
double r22755 = sqrt(r22754);
double r22756 = r22743 ? r22751 : r22755;
return r22756;
}



Bits error versus x
if (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0)) < 1.5265106991190736e+108Initial program 1.8
rmApplied flip--1.3
Simplified0.0
if 1.5265106991190736e+108 < (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0)) Initial program 63.7
Taylor expanded around 0 2.6
Simplified2.6
Final simplification0.1
herbie shell --seed 2019304 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))