\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\begin{array}{l}
\mathbf{if}\;x \le -3.639623849017884427727010081959901910409 \cdot 10^{-7}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \sqrt{\mathsf{expm1}\left(\mathsf{log1p}\left(e^{x} + 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.5, x, 1\right), 2\right)}\\
\end{array}double f(double x) {
double r21197 = 2.0;
double r21198 = x;
double r21199 = r21197 * r21198;
double r21200 = exp(r21199);
double r21201 = 1.0;
double r21202 = r21200 - r21201;
double r21203 = exp(r21198);
double r21204 = r21203 - r21201;
double r21205 = r21202 / r21204;
double r21206 = sqrt(r21205);
return r21206;
}
double f(double x) {
double r21207 = x;
double r21208 = -3.6396238490178844e-07;
bool r21209 = r21207 <= r21208;
double r21210 = 2.0;
double r21211 = r21210 * r21207;
double r21212 = exp(r21211);
double r21213 = 1.0;
double r21214 = r21212 - r21213;
double r21215 = r21207 + r21207;
double r21216 = exp(r21215);
double r21217 = r21213 * r21213;
double r21218 = r21216 - r21217;
double r21219 = r21214 / r21218;
double r21220 = sqrt(r21219);
double r21221 = exp(r21207);
double r21222 = r21221 + r21213;
double r21223 = log1p(r21222);
double r21224 = expm1(r21223);
double r21225 = sqrt(r21224);
double r21226 = r21220 * r21225;
double r21227 = 0.5;
double r21228 = fma(r21227, r21207, r21213);
double r21229 = fma(r21207, r21228, r21210);
double r21230 = sqrt(r21229);
double r21231 = r21209 ? r21226 : r21230;
return r21231;
}



Bits error versus x
if x < -3.6396238490178844e-07Initial program 0.2
rmApplied flip--0.1
Applied associate-/r/0.1
Applied sqrt-prod0.1
Simplified0.0
rmApplied expm1-log1p-u0.0
if -3.6396238490178844e-07 < x Initial program 34.4
Taylor expanded around 0 6.6
Simplified6.6
Final simplification0.8
herbie shell --seed 2019325 +o rules:numerics
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))