\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \le -1.16411630771553129 \cdot 10^{-10}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{\frac{\mathsf{fma}\left(-1, 1, e^{x + x}\right)}{e^{x} + 1}}}\\
\mathbf{elif}\;x \le 1.07703766894357749 \cdot 10^{-13}:\\
\;\;\;\;0.5 \cdot \frac{x}{\sqrt{2}} + \left(\sqrt{2} + \frac{{x}^{2}}{\sqrt{2}} \cdot \left(0.25 - \frac{0.125}{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left(e^{2 \cdot x} - 1\right) \cdot \frac{1}{\frac{\mathsf{fma}\left(-1, 1, e^{x + x}\right)}{e^{x} + 1}}}\\
\end{array}double f(double x) {
double r17100 = 2.0;
double r17101 = x;
double r17102 = r17100 * r17101;
double r17103 = exp(r17102);
double r17104 = 1.0;
double r17105 = r17103 - r17104;
double r17106 = exp(r17101);
double r17107 = r17106 - r17104;
double r17108 = r17105 / r17107;
double r17109 = sqrt(r17108);
return r17109;
}
double f(double x) {
double r17110 = x;
double r17111 = -1.1641163077155313e-10;
bool r17112 = r17110 <= r17111;
double r17113 = 2.0;
double r17114 = r17113 * r17110;
double r17115 = exp(r17114);
double r17116 = 1.0;
double r17117 = r17115 - r17116;
double r17118 = -r17116;
double r17119 = r17110 + r17110;
double r17120 = exp(r17119);
double r17121 = fma(r17118, r17116, r17120);
double r17122 = exp(r17110);
double r17123 = r17122 + r17116;
double r17124 = r17121 / r17123;
double r17125 = r17117 / r17124;
double r17126 = sqrt(r17125);
double r17127 = 1.0770376689435775e-13;
bool r17128 = r17110 <= r17127;
double r17129 = 0.5;
double r17130 = sqrt(r17113);
double r17131 = r17110 / r17130;
double r17132 = r17129 * r17131;
double r17133 = 2.0;
double r17134 = pow(r17110, r17133);
double r17135 = r17134 / r17130;
double r17136 = 0.25;
double r17137 = 0.125;
double r17138 = r17137 / r17113;
double r17139 = r17136 - r17138;
double r17140 = r17135 * r17139;
double r17141 = r17130 + r17140;
double r17142 = r17132 + r17141;
double r17143 = 1.0;
double r17144 = r17143 / r17124;
double r17145 = r17117 * r17144;
double r17146 = sqrt(r17145);
double r17147 = r17128 ? r17142 : r17146;
double r17148 = r17112 ? r17126 : r17147;
return r17148;
}



Bits error versus x
if x < -1.1641163077155313e-10Initial program 0.3
rmApplied flip--0.2
Simplified0.0
if -1.1641163077155313e-10 < x < 1.0770376689435775e-13Initial program 51.2
Taylor expanded around 0 0.2
Simplified0.2
if 1.0770376689435775e-13 < x Initial program 14.0
rmApplied flip--9.4
Simplified1.7
rmApplied div-inv1.8
Final simplification0.1
herbie shell --seed 2020020 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))