\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \le -1.27319002816284202 \cdot 10^{-5} \lor \neg \left(x \le 5.5214039011077179 \cdot 10^{-17}\right):\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{\mathsf{fma}\left(-1, 1, e^{x + x}\right) \cdot \frac{1}{e^{x} + 1}}}\\
\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 r18285 = 2.0;
double r18286 = x;
double r18287 = r18285 * r18286;
double r18288 = exp(r18287);
double r18289 = 1.0;
double r18290 = r18288 - r18289;
double r18291 = exp(r18286);
double r18292 = r18291 - r18289;
double r18293 = r18290 / r18292;
double r18294 = sqrt(r18293);
return r18294;
}
double f(double x) {
double r18295 = x;
double r18296 = -1.273190028162842e-05;
bool r18297 = r18295 <= r18296;
double r18298 = 5.521403901107718e-17;
bool r18299 = r18295 <= r18298;
double r18300 = !r18299;
bool r18301 = r18297 || r18300;
double r18302 = 2.0;
double r18303 = r18302 * r18295;
double r18304 = exp(r18303);
double r18305 = 1.0;
double r18306 = r18304 - r18305;
double r18307 = -r18305;
double r18308 = r18295 + r18295;
double r18309 = exp(r18308);
double r18310 = fma(r18307, r18305, r18309);
double r18311 = 1.0;
double r18312 = exp(r18295);
double r18313 = r18312 + r18305;
double r18314 = r18311 / r18313;
double r18315 = r18310 * r18314;
double r18316 = r18306 / r18315;
double r18317 = sqrt(r18316);
double r18318 = 0.5;
double r18319 = 2.0;
double r18320 = pow(r18295, r18319);
double r18321 = fma(r18305, r18295, r18302);
double r18322 = fma(r18318, r18320, r18321);
double r18323 = sqrt(r18322);
double r18324 = r18301 ? r18317 : r18323;
return r18324;
}



Bits error versus x
if x < -1.273190028162842e-05 or 5.521403901107718e-17 < x Initial program 1.0
rmApplied flip--0.7
Simplified0.1
rmApplied div-inv0.1
if -1.273190028162842e-05 < x < 5.521403901107718e-17Initial program 44.9
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020035 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))