Average Error: 4.3 → 0.9
Time: 49.6s
Precision: 64
\[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -4.527236342338421397557006909014021278637 \cdot 10^{-9}:\\ \;\;\;\;\sqrt{\frac{\left(\sqrt{1} + \sqrt{e^{2 \cdot x}}\right) \cdot \left(\sqrt{e^{2 \cdot x}} - \sqrt{1}\right)}{e^{x} - 1}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.4999999999999997779553950749686919152737, x, 1\right), 2\right)}\\ \end{array}\]
\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}
\begin{array}{l}
\mathbf{if}\;x \le -4.527236342338421397557006909014021278637 \cdot 10^{-9}:\\
\;\;\;\;\sqrt{\frac{\left(\sqrt{1} + \sqrt{e^{2 \cdot x}}\right) \cdot \left(\sqrt{e^{2 \cdot x}} - \sqrt{1}\right)}{e^{x} - 1}}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.4999999999999997779553950749686919152737, x, 1\right), 2\right)}\\

\end{array}
double f(double x) {
        double r1298537 = 2.0;
        double r1298538 = x;
        double r1298539 = r1298537 * r1298538;
        double r1298540 = exp(r1298539);
        double r1298541 = 1.0;
        double r1298542 = r1298540 - r1298541;
        double r1298543 = exp(r1298538);
        double r1298544 = r1298543 - r1298541;
        double r1298545 = r1298542 / r1298544;
        double r1298546 = sqrt(r1298545);
        return r1298546;
}

double f(double x) {
        double r1298547 = x;
        double r1298548 = -4.527236342338421e-09;
        bool r1298549 = r1298547 <= r1298548;
        double r1298550 = 1.0;
        double r1298551 = sqrt(r1298550);
        double r1298552 = 2.0;
        double r1298553 = r1298552 * r1298547;
        double r1298554 = exp(r1298553);
        double r1298555 = sqrt(r1298554);
        double r1298556 = r1298551 + r1298555;
        double r1298557 = r1298555 - r1298551;
        double r1298558 = r1298556 * r1298557;
        double r1298559 = exp(r1298547);
        double r1298560 = r1298559 - r1298550;
        double r1298561 = r1298558 / r1298560;
        double r1298562 = sqrt(r1298561);
        double r1298563 = 0.4999999999999998;
        double r1298564 = fma(r1298563, r1298547, r1298550);
        double r1298565 = fma(r1298547, r1298564, r1298552);
        double r1298566 = sqrt(r1298565);
        double r1298567 = r1298549 ? r1298562 : r1298566;
        return r1298567;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -4.527236342338421e-09

    1. Initial program 0.3

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

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

      \[\leadsto \sqrt{\frac{\color{blue}{\sqrt{e^{2 \cdot x}} \cdot \sqrt{e^{2 \cdot x}}} - \sqrt{1} \cdot \sqrt{1}}{e^{x} - 1}}\]
    5. Applied difference-of-squares0.0

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

    if -4.527236342338421e-09 < x

    1. Initial program 34.9

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

      \[\leadsto \sqrt{\frac{\color{blue}{\sqrt{e^{2 \cdot x}} \cdot \sqrt{e^{2 \cdot x}}} - 1}{e^{x} - 1}}\]
    4. Applied fma-neg27.5

      \[\leadsto \sqrt{\frac{\color{blue}{\mathsf{fma}\left(\sqrt{e^{2 \cdot x}}, \sqrt{e^{2 \cdot x}}, -1\right)}}{e^{x} - 1}}\]
    5. Taylor expanded around 0 7.5

      \[\leadsto \sqrt{\color{blue}{1 \cdot x + \left(0.4999999999999997779553950749686919152737 \cdot {x}^{2} + 2\right)}}\]
    6. Simplified7.5

      \[\leadsto \sqrt{\color{blue}{\mathsf{fma}\left(x, \mathsf{fma}\left(0.4999999999999997779553950749686919152737, x, 1\right), 2\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -4.527236342338421397557006909014021278637 \cdot 10^{-9}:\\ \;\;\;\;\sqrt{\frac{\left(\sqrt{1} + \sqrt{e^{2 \cdot x}}\right) \cdot \left(\sqrt{e^{2 \cdot x}} - \sqrt{1}\right)}{e^{x} - 1}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.4999999999999997779553950749686919152737, x, 1\right), 2\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (x)
  :name "sqrtexp (problem 3.4.4)"
  (sqrt (/ (- (exp (* 2.0 x)) 1.0) (- (exp x) 1.0))))