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

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

\end{array}
double f(double x) {
        double r26697 = 2.0;
        double r26698 = x;
        double r26699 = r26697 * r26698;
        double r26700 = exp(r26699);
        double r26701 = 1.0;
        double r26702 = r26700 - r26701;
        double r26703 = exp(r26698);
        double r26704 = r26703 - r26701;
        double r26705 = r26702 / r26704;
        double r26706 = sqrt(r26705);
        return r26706;
}

double f(double x) {
        double r26707 = x;
        double r26708 = -9.48316931979068e-14;
        bool r26709 = r26707 <= r26708;
        double r26710 = 2.0;
        double r26711 = r26710 * r26707;
        double r26712 = exp(r26711);
        double r26713 = 1.0;
        double r26714 = r26712 - r26713;
        double r26715 = r26707 + r26707;
        double r26716 = exp(r26715);
        double r26717 = r26713 * r26713;
        double r26718 = r26716 - r26717;
        double r26719 = r26714 / r26718;
        double r26720 = sqrt(r26719);
        double r26721 = cbrt(r26707);
        double r26722 = r26721 * r26721;
        double r26723 = exp(r26722);
        double r26724 = 2.0;
        double r26725 = r26721 / r26724;
        double r26726 = pow(r26723, r26725);
        double r26727 = sqrt(r26713);
        double r26728 = hypot(r26726, r26727);
        double r26729 = r26720 * r26728;
        double r26730 = pow(r26707, r26724);
        double r26731 = sqrt(r26710);
        double r26732 = r26730 / r26731;
        double r26733 = 0.25;
        double r26734 = 0.125;
        double r26735 = r26734 / r26710;
        double r26736 = r26733 - r26735;
        double r26737 = 0.5;
        double r26738 = r26707 / r26731;
        double r26739 = fma(r26737, r26738, r26731);
        double r26740 = fma(r26732, r26736, r26739);
        double r26741 = r26709 ? r26729 : r26740;
        return r26741;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -9.48316931979068e-14

    1. Initial program 0.7

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

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

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

      \[\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)}\]
    11. Using strategy rm
    12. Applied add-cube-cbrt0.0

      \[\leadsto \sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \mathsf{hypot}\left(\sqrt{e^{\color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}}, \sqrt{1}\right)\]
    13. Applied exp-prod0.0

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

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

    if -9.48316931979068e-14 < x

    1. Initial program 37.5

      \[\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x} - 1}}\]
    2. Taylor expanded around 0 7.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}}}\]
    3. Simplified7.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -9.483169319790680130512520587429338328033 \cdot 10^{-14}:\\ \;\;\;\;\sqrt{\frac{e^{2 \cdot x} - 1}{e^{x + x} - 1 \cdot 1}} \cdot \mathsf{hypot}\left({\left(e^{\sqrt[3]{x} \cdot \sqrt[3]{x}}\right)}^{\left(\frac{\sqrt[3]{x}}{2}\right)}, \sqrt{1}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{{x}^{2}}{\sqrt{2}}, 0.25 - \frac{0.125}{2}, \mathsf{fma}\left(0.5, \frac{x}{\sqrt{2}}, \sqrt{2}\right)\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))))