Average Error: 4.3 → 0.8
Time: 25.1s
Precision: 64
\[\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 \frac{{\left(e^{x}\right)}^{3} + {1}^{3}}{\mathsf{fma}\left(1, 1 - e^{x}, e^{2 \cdot x}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.5, x, 1\right), 2\right)}\\ \end{array}\]
\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 \frac{{\left(e^{x}\right)}^{3} + {1}^{3}}{\mathsf{fma}\left(1, 1 - e^{x}, e^{2 \cdot x}\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 r20777 = 2.0;
        double r20778 = x;
        double r20779 = r20777 * r20778;
        double r20780 = exp(r20779);
        double r20781 = 1.0;
        double r20782 = r20780 - r20781;
        double r20783 = exp(r20778);
        double r20784 = r20783 - r20781;
        double r20785 = r20782 / r20784;
        double r20786 = sqrt(r20785);
        return r20786;
}

double f(double x) {
        double r20787 = x;
        double r20788 = -3.6396238490178844e-07;
        bool r20789 = r20787 <= r20788;
        double r20790 = 2.0;
        double r20791 = r20790 * r20787;
        double r20792 = exp(r20791);
        double r20793 = 1.0;
        double r20794 = r20792 - r20793;
        double r20795 = r20787 + r20787;
        double r20796 = exp(r20795);
        double r20797 = r20793 * r20793;
        double r20798 = r20796 - r20797;
        double r20799 = r20794 / r20798;
        double r20800 = exp(r20787);
        double r20801 = 3.0;
        double r20802 = pow(r20800, r20801);
        double r20803 = pow(r20793, r20801);
        double r20804 = r20802 + r20803;
        double r20805 = r20793 - r20800;
        double r20806 = 2.0;
        double r20807 = r20806 * r20787;
        double r20808 = exp(r20807);
        double r20809 = fma(r20793, r20805, r20808);
        double r20810 = r20804 / r20809;
        double r20811 = r20799 * r20810;
        double r20812 = sqrt(r20811);
        double r20813 = 0.5;
        double r20814 = fma(r20813, r20787, r20793);
        double r20815 = fma(r20787, r20814, r20790);
        double r20816 = sqrt(r20815);
        double r20817 = r20789 ? r20812 : r20816;
        return r20817;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -3.6396238490178844e-07

    1. Initial program 0.2

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

      \[\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.1

      \[\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. Simplified0.0

      \[\leadsto \sqrt{\color{blue}{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \left(e^{x} + 1\right)}\]
    6. Using strategy rm
    7. Applied flip3-+0.0

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

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

    if -3.6396238490178844e-07 < x

    1. Initial program 34.4

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

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

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

    \[\leadsto \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 \frac{{\left(e^{x}\right)}^{3} + {1}^{3}}{\mathsf{fma}\left(1, 1 - e^{x}, e^{2 \cdot x}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(x, \mathsf{fma}\left(0.5, x, 1\right), 2\right)}\\ \end{array}\]

Reproduce

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))))