Average Error: 4.7 → 0.9
Time: 25.6s
Precision: 64
\[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -4.967589317233999349028090086397013713793 \cdot 10^{-8}:\\ \;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{\left(e^{x + x} - 1 \cdot 1\right) \cdot \frac{1}{e^{x} + 1}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(0.5, \frac{x}{\sqrt{2}}, \sqrt{2}\right) + \frac{{x}^{2}}{\sqrt{2}} \cdot \left(0.25 - \frac{0.125}{2}\right)\\ \end{array}\]
\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}
\begin{array}{l}
\mathbf{if}\;x \le -4.967589317233999349028090086397013713793 \cdot 10^{-8}:\\
\;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{\left(e^{x + x} - 1 \cdot 1\right) \cdot \frac{1}{e^{x} + 1}}}\\

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

\end{array}
double f(double x) {
        double r25096 = 2.0;
        double r25097 = x;
        double r25098 = r25096 * r25097;
        double r25099 = exp(r25098);
        double r25100 = 1.0;
        double r25101 = r25099 - r25100;
        double r25102 = exp(r25097);
        double r25103 = r25102 - r25100;
        double r25104 = r25101 / r25103;
        double r25105 = sqrt(r25104);
        return r25105;
}

double f(double x) {
        double r25106 = x;
        double r25107 = -4.9675893172339993e-08;
        bool r25108 = r25106 <= r25107;
        double r25109 = 2.0;
        double r25110 = r25109 * r25106;
        double r25111 = exp(r25110);
        double r25112 = 1.0;
        double r25113 = r25111 - r25112;
        double r25114 = r25106 + r25106;
        double r25115 = exp(r25114);
        double r25116 = r25112 * r25112;
        double r25117 = r25115 - r25116;
        double r25118 = 1.0;
        double r25119 = exp(r25106);
        double r25120 = r25119 + r25112;
        double r25121 = r25118 / r25120;
        double r25122 = r25117 * r25121;
        double r25123 = r25113 / r25122;
        double r25124 = sqrt(r25123);
        double r25125 = 0.5;
        double r25126 = sqrt(r25109);
        double r25127 = r25106 / r25126;
        double r25128 = fma(r25125, r25127, r25126);
        double r25129 = 2.0;
        double r25130 = pow(r25106, r25129);
        double r25131 = r25130 / r25126;
        double r25132 = 0.25;
        double r25133 = 0.125;
        double r25134 = r25133 / r25109;
        double r25135 = r25132 - r25134;
        double r25136 = r25131 * r25135;
        double r25137 = r25128 + r25136;
        double r25138 = r25108 ? r25124 : r25137;
        return r25138;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -4.9675893172339993e-08

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

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{\frac{\color{blue}{e^{x + x} - 1 \cdot 1}}{e^{x} + 1}}}\]
    5. Using strategy rm
    6. Applied div-inv0.0

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

    if -4.9675893172339993e-08 < x

    1. Initial program 35.5

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

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{\color{blue}{\frac{e^{x} \cdot e^{x} - 1 \cdot 1}{e^{x} + 1}}}}\]
    4. Simplified23.8

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{\frac{\color{blue}{e^{x + x} - 1 \cdot 1}}{e^{x} + 1}}}\]
    5. Using strategy rm
    6. Applied div-inv23.9

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

      \[\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}}}\]
    8. Simplified6.7

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

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

Reproduce

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