Average Error: 4.6 → 0.8
Time: 37.0s
Precision: 64
\[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -5.424460250624855105466143312398230591498 \cdot 10^{-5}:\\ \;\;\;\;\sqrt{\frac{\mathsf{fma}\left(\sqrt{e^{2 \cdot x}}, \sqrt{e^{2 \cdot x}}, -1\right)}{\mathsf{log1p}\left(\mathsf{expm1}\left(e^{x} - 1\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.4999999999999997779553950749686919152737, 1\right), 2\right)}\\ \end{array}\]
\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}
\begin{array}{l}
\mathbf{if}\;x \le -5.424460250624855105466143312398230591498 \cdot 10^{-5}:\\
\;\;\;\;\sqrt{\frac{\mathsf{fma}\left(\sqrt{e^{2 \cdot x}}, \sqrt{e^{2 \cdot x}}, -1\right)}{\mathsf{log1p}\left(\mathsf{expm1}\left(e^{x} - 1\right)\right)}}\\

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

\end{array}
double f(double x) {
        double r4749561 = 2.0;
        double r4749562 = x;
        double r4749563 = r4749561 * r4749562;
        double r4749564 = exp(r4749563);
        double r4749565 = 1.0;
        double r4749566 = r4749564 - r4749565;
        double r4749567 = exp(r4749562);
        double r4749568 = r4749567 - r4749565;
        double r4749569 = r4749566 / r4749568;
        double r4749570 = sqrt(r4749569);
        return r4749570;
}

double f(double x) {
        double r4749571 = x;
        double r4749572 = -5.424460250624855e-05;
        bool r4749573 = r4749571 <= r4749572;
        double r4749574 = 2.0;
        double r4749575 = r4749574 * r4749571;
        double r4749576 = exp(r4749575);
        double r4749577 = sqrt(r4749576);
        double r4749578 = 1.0;
        double r4749579 = -r4749578;
        double r4749580 = fma(r4749577, r4749577, r4749579);
        double r4749581 = exp(r4749571);
        double r4749582 = r4749581 - r4749578;
        double r4749583 = expm1(r4749582);
        double r4749584 = log1p(r4749583);
        double r4749585 = r4749580 / r4749584;
        double r4749586 = sqrt(r4749585);
        double r4749587 = 0.4999999999999998;
        double r4749588 = fma(r4749571, r4749587, r4749578);
        double r4749589 = fma(r4749571, r4749588, r4749574);
        double r4749590 = sqrt(r4749589);
        double r4749591 = r4749573 ? r4749586 : r4749590;
        return r4749591;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -5.424460250624855e-05

    1. Initial program 0.1

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

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

      \[\leadsto \sqrt{\frac{\color{blue}{\mathsf{fma}\left(\sqrt{e^{2 \cdot x}}, \sqrt{e^{2 \cdot x}}, -1\right)}}{e^{x} - 1}}\]
    5. Using strategy rm
    6. Applied log1p-expm1-u0.0

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

    if -5.424460250624855e-05 < x

    1. Initial program 34.7

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

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

      \[\leadsto \sqrt{\frac{\color{blue}{\mathsf{fma}\left(\sqrt{e^{2 \cdot x}}, \sqrt{e^{2 \cdot x}}, -1\right)}}{e^{x} - 1}}\]
    5. Using strategy rm
    6. Applied div-inv27.0

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

      \[\leadsto \sqrt{\color{blue}{1 \cdot x + \left(0.4999999999999997779553950749686919152737 \cdot {x}^{2} + 2\right)}}\]
    8. Simplified6.3

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

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

Reproduce

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