Average Error: 4.5 → 0.8
Time: 14.5s
Precision: 64
\[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -5.504206308688681527034029884124844037593 \cdot 10^{-17}:\\ \;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \mathsf{hypot}\left(\sqrt{e^{x}}, \sqrt{1}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{{x}^{2}}{\sqrt{2}}, 0.25 - \frac{0.125}{2}, \mathsf{fma}\left(\frac{x}{\sqrt{2}}, 0.5, \sqrt{2}\right)\right)\\ \end{array}\]
\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}
\begin{array}{l}
\mathbf{if}\;x \le -5.504206308688681527034029884124844037593 \cdot 10^{-17}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \mathsf{hypot}\left(\sqrt{e^{x}}, \sqrt{1}\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{{x}^{2}}{\sqrt{2}}, 0.25 - \frac{0.125}{2}, \mathsf{fma}\left(\frac{x}{\sqrt{2}}, 0.5, \sqrt{2}\right)\right)\\

\end{array}
double f(double x) {
        double r18481 = 2.0;
        double r18482 = x;
        double r18483 = r18481 * r18482;
        double r18484 = exp(r18483);
        double r18485 = 1.0;
        double r18486 = r18484 - r18485;
        double r18487 = exp(r18482);
        double r18488 = r18487 - r18485;
        double r18489 = r18486 / r18488;
        double r18490 = sqrt(r18489);
        return r18490;
}

double f(double x) {
        double r18491 = x;
        double r18492 = -5.5042063086886815e-17;
        bool r18493 = r18491 <= r18492;
        double r18494 = 2.0;
        double r18495 = r18494 * r18491;
        double r18496 = exp(r18495);
        double r18497 = 1.0;
        double r18498 = r18496 - r18497;
        double r18499 = r18491 + r18491;
        double r18500 = exp(r18499);
        double r18501 = r18497 * r18497;
        double r18502 = r18500 - r18501;
        double r18503 = r18498 / r18502;
        double r18504 = sqrt(r18503);
        double r18505 = exp(r18491);
        double r18506 = sqrt(r18505);
        double r18507 = sqrt(r18497);
        double r18508 = hypot(r18506, r18507);
        double r18509 = r18504 * r18508;
        double r18510 = 2.0;
        double r18511 = pow(r18491, r18510);
        double r18512 = sqrt(r18494);
        double r18513 = r18511 / r18512;
        double r18514 = 0.25;
        double r18515 = 0.125;
        double r18516 = r18515 / r18494;
        double r18517 = r18514 - r18516;
        double r18518 = r18491 / r18512;
        double r18519 = 0.5;
        double r18520 = fma(r18518, r18519, r18512);
        double r18521 = fma(r18513, r18517, r18520);
        double r18522 = r18493 ? r18509 : r18521;
        return r18522;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -5.5042063086886815e-17

    1. Initial program 0.9

      \[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
    2. Using strategy rm
    3. Applied flip--0.7

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{\color{blue}{\frac{e^{x} \cdot e^{x} - 1 \cdot 1}{e^{x} + 1}}}}\]
    4. Applied associate-/r/0.7

      \[\leadsto \sqrt{\color{blue}{\frac{e^{2 \cdot x} - 1}{e^{x} \cdot e^{x} - 1 \cdot 1} \cdot \left(e^{x} + 1\right)}}\]
    5. Applied sqrt-prod0.7

      \[\leadsto \color{blue}{\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} \cdot e^{x} - 1 \cdot 1}} \cdot \sqrt{e^{x} + 1}}\]
    6. Simplified0.0

      \[\leadsto \color{blue}{\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}}} \cdot \sqrt{e^{x} + 1}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt0.0

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \sqrt{e^{x} + \color{blue}{\sqrt{1} \cdot \sqrt{1}}}\]
    9. Applied add-sqr-sqrt0.0

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \sqrt{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}} + \sqrt{1} \cdot \sqrt{1}}\]
    10. Applied hypot-def0.0

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \color{blue}{\mathsf{hypot}\left(\sqrt{e^{x}}, \sqrt{1}\right)}\]

    if -5.5042063086886815e-17 < x

    1. Initial program 37.9

      \[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
    2. Taylor expanded around 0 8.4

      \[\leadsto \color{blue}{\left(0.25 \cdot \frac{{x}^{2}}{\sqrt{2}} + \left(\sqrt{2} + 0.5 \cdot \frac{x}{\sqrt{2}}\right)\right) - 0.125 \cdot \frac{{x}^{2}}{{\left(\sqrt{2}\right)}^{3}}}\]
    3. Simplified8.4

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{{x}^{2}}{\sqrt{2}}, 0.25 - \frac{0.125}{2}, \mathsf{fma}\left(\frac{x}{\sqrt{2}}, 0.5, \sqrt{2}\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -5.504206308688681527034029884124844037593 \cdot 10^{-17}:\\ \;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \mathsf{hypot}\left(\sqrt{e^{x}}, \sqrt{1}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{{x}^{2}}{\sqrt{2}}, 0.25 - \frac{0.125}{2}, \mathsf{fma}\left(\frac{x}{\sqrt{2}}, 0.5, \sqrt{2}\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019351 +o rules:numerics
(FPCore (x)
  :name "sqrtexp (problem 3.4.4)"
  :precision binary64
  (sqrt (/ (- (exp (* 2 x)) 1) (- (exp x) 1))))