\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 4.18846305646304769 \cdot 10^{84}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{\mathsf{fma}\left(-1, 1, e^{x + x}\right)} \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 r10666 = 2.0;
double r10667 = x;
double r10668 = r10666 * r10667;
double r10669 = exp(r10668);
double r10670 = 1.0;
double r10671 = r10669 - r10670;
double r10672 = exp(r10667);
double r10673 = r10672 - r10670;
double r10674 = r10671 / r10673;
double r10675 = sqrt(r10674);
return r10675;
}
double f(double x) {
double r10676 = 2.0;
double r10677 = x;
double r10678 = r10676 * r10677;
double r10679 = exp(r10678);
double r10680 = 1.0;
double r10681 = r10679 - r10680;
double r10682 = exp(r10677);
double r10683 = r10682 - r10680;
double r10684 = r10681 / r10683;
double r10685 = 4.188463056463048e+84;
bool r10686 = r10684 <= r10685;
double r10687 = -r10680;
double r10688 = r10677 + r10677;
double r10689 = exp(r10688);
double r10690 = fma(r10687, r10680, r10689);
double r10691 = r10681 / r10690;
double r10692 = sqrt(r10682);
double r10693 = fma(r10692, r10692, r10680);
double r10694 = r10691 * r10693;
double r10695 = sqrt(r10694);
double r10696 = 0.5;
double r10697 = 2.0;
double r10698 = pow(r10677, r10697);
double r10699 = fma(r10680, r10677, r10676);
double r10700 = fma(r10696, r10698, r10699);
double r10701 = sqrt(r10700);
double r10702 = r10686 ? r10695 : r10701;
return r10702;
}



Bits error versus x
if (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0)) < 4.188463056463048e+84Initial program 1.7
rmApplied flip--1.3
Applied associate-/r/1.3
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied fma-def0.0
if 4.188463056463048e+84 < (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0)) Initial program 63.1
Taylor expanded around 0 3.2
Simplified3.2
Final simplification0.2
herbie shell --seed 2020027 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))