\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 3.1614723444166669 \cdot 10^{100}:\\
\;\;\;\;\sqrt{\frac{\sqrt{e^{2 \cdot x}} + \sqrt{1}}{1}} \cdot \sqrt{\frac{\sqrt{e^{2 \cdot x}} - \sqrt{1}}{e^{x} - 1}}\\
\mathbf{else}:\\
\;\;\;\;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)\\
\end{array}double f(double x) {
double r10470 = 2.0;
double r10471 = x;
double r10472 = r10470 * r10471;
double r10473 = exp(r10472);
double r10474 = 1.0;
double r10475 = r10473 - r10474;
double r10476 = exp(r10471);
double r10477 = r10476 - r10474;
double r10478 = r10475 / r10477;
double r10479 = sqrt(r10478);
return r10479;
}
double f(double x) {
double r10480 = 2.0;
double r10481 = x;
double r10482 = r10480 * r10481;
double r10483 = exp(r10482);
double r10484 = 1.0;
double r10485 = r10483 - r10484;
double r10486 = exp(r10481);
double r10487 = r10486 - r10484;
double r10488 = r10485 / r10487;
double r10489 = 3.161472344416667e+100;
bool r10490 = r10488 <= r10489;
double r10491 = sqrt(r10483);
double r10492 = sqrt(r10484);
double r10493 = r10491 + r10492;
double r10494 = 1.0;
double r10495 = r10493 / r10494;
double r10496 = sqrt(r10495);
double r10497 = r10491 - r10492;
double r10498 = r10497 / r10487;
double r10499 = sqrt(r10498);
double r10500 = r10496 * r10499;
double r10501 = 0.5;
double r10502 = sqrt(r10480);
double r10503 = r10481 / r10502;
double r10504 = r10501 * r10503;
double r10505 = 2.0;
double r10506 = pow(r10481, r10505);
double r10507 = r10506 / r10502;
double r10508 = 0.25;
double r10509 = 0.125;
double r10510 = r10509 / r10480;
double r10511 = r10508 - r10510;
double r10512 = r10507 * r10511;
double r10513 = r10502 + r10512;
double r10514 = r10504 + r10513;
double r10515 = r10490 ? r10500 : r10514;
return r10515;
}



Bits error versus x
Results
if (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0)) < 3.161472344416667e+100Initial program 1.6
rmApplied *-un-lft-identity1.6
Applied add-sqr-sqrt1.6
Applied add-sqr-sqrt1.3
Applied difference-of-squares0.5
Applied times-frac0.5
Applied sqrt-prod0.5
if 3.161472344416667e+100 < (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0)) Initial program 63.8
Taylor expanded around 0 2.2
Simplified2.2
Final simplification0.6
herbie shell --seed 2020089
(FPCore (x)
:name "sqrtexp (problem 3.4.4)"
:precision binary64
(sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))