\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \le -1.115913044114018052781652529630905079476 \cdot 10^{-11}:\\
\;\;\;\;\sqrt{\left(\sqrt{\sqrt{e^{2 \cdot x}}} \cdot \sqrt{\sqrt{e^{2 \cdot x}}} + \sqrt{1}\right) \cdot \frac{{\left(e^{2}\right)}^{\left(\frac{x}{2}\right)} - \sqrt{1}}{e^{x} - 1}}\\
\mathbf{elif}\;x \le 1.125086014533883177092032077723640804814 \cdot 10^{-16}:\\
\;\;\;\;\sqrt{x \cdot \left(1 + 0.5 \cdot x\right) + 2}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left({\left(e^{2 + 2}\right)}^{\left(\frac{\frac{x}{2}}{2}\right)} + \sqrt{1}\right) \cdot \frac{{\left(e^{2}\right)}^{\left(\frac{x}{2}\right)} - \sqrt{1}}{e^{x} - 1}}\\
\end{array}double f(double x) {
double r19658 = 2.0;
double r19659 = x;
double r19660 = r19658 * r19659;
double r19661 = exp(r19660);
double r19662 = 1.0;
double r19663 = r19661 - r19662;
double r19664 = exp(r19659);
double r19665 = r19664 - r19662;
double r19666 = r19663 / r19665;
double r19667 = sqrt(r19666);
return r19667;
}
double f(double x) {
double r19668 = x;
double r19669 = -1.115913044114018e-11;
bool r19670 = r19668 <= r19669;
double r19671 = 2.0;
double r19672 = r19671 * r19668;
double r19673 = exp(r19672);
double r19674 = sqrt(r19673);
double r19675 = sqrt(r19674);
double r19676 = r19675 * r19675;
double r19677 = 1.0;
double r19678 = sqrt(r19677);
double r19679 = r19676 + r19678;
double r19680 = exp(r19671);
double r19681 = 2.0;
double r19682 = r19668 / r19681;
double r19683 = pow(r19680, r19682);
double r19684 = r19683 - r19678;
double r19685 = exp(r19668);
double r19686 = r19685 - r19677;
double r19687 = r19684 / r19686;
double r19688 = r19679 * r19687;
double r19689 = sqrt(r19688);
double r19690 = 1.1250860145338832e-16;
bool r19691 = r19668 <= r19690;
double r19692 = 0.5;
double r19693 = r19692 * r19668;
double r19694 = r19677 + r19693;
double r19695 = r19668 * r19694;
double r19696 = r19695 + r19671;
double r19697 = sqrt(r19696);
double r19698 = r19671 + r19671;
double r19699 = exp(r19698);
double r19700 = r19682 / r19681;
double r19701 = pow(r19699, r19700);
double r19702 = r19701 + r19678;
double r19703 = r19702 * r19687;
double r19704 = sqrt(r19703);
double r19705 = r19691 ? r19697 : r19704;
double r19706 = r19670 ? r19689 : r19705;
return r19706;
}



Bits error versus x
Results
if x < -1.115913044114018e-11Initial program 0.5
rmApplied *-un-lft-identity0.5
Applied add-sqr-sqrt0.5
Applied add-sqr-sqrt0.5
Applied difference-of-squares0.1
Applied times-frac0.1
Simplified0.1
rmApplied add-log-exp0.1
Applied exp-to-pow0.1
Applied sqrt-pow10.0
rmApplied add-sqr-sqrt0.0
Applied sqrt-prod0.0
if -1.115913044114018e-11 < x < 1.1250860145338832e-16Initial program 54.6
Taylor expanded around 0 0.0
Simplified0.0
if 1.1250860145338832e-16 < x Initial program 17.4
rmApplied *-un-lft-identity17.4
Applied add-sqr-sqrt17.4
Applied add-sqr-sqrt14.0
Applied difference-of-squares7.4
Applied times-frac7.4
Simplified7.4
rmApplied add-log-exp7.4
Applied exp-to-pow7.5
Applied sqrt-pow12.1
rmApplied add-sqr-sqrt2.1
Applied sqrt-prod2.2
rmApplied add-log-exp2.2
Applied exp-to-pow2.2
Applied sqrt-pow12.2
Applied sqrt-pow12.2
Applied add-log-exp2.2
Applied exp-to-pow2.2
Applied sqrt-pow11.3
Applied sqrt-pow11.3
Applied pow-prod-down1.3
Simplified1.1
Final simplification0.1
herbie shell --seed 2019294
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))