Average Error: 58.1 → 0.3
Time: 19.7s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.0173873374630720313460674475436462671496:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{\sqrt{e^{x}}} \cdot \left(\sqrt[3]{e^{x}} \cdot \sqrt[3]{\sqrt{e^{x}}}\right), \sqrt[3]{e^{x}}, -e^{-x}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\ \end{array}\]
\frac{e^{x} - e^{-x}}{2}
\begin{array}{l}
\mathbf{if}\;x \le -0.0173873374630720313460674475436462671496:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{\sqrt{e^{x}}} \cdot \left(\sqrt[3]{e^{x}} \cdot \sqrt[3]{\sqrt{e^{x}}}\right), \sqrt[3]{e^{x}}, -e^{-x}\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\

\end{array}
double f(double x) {
        double r67278 = x;
        double r67279 = exp(r67278);
        double r67280 = -r67278;
        double r67281 = exp(r67280);
        double r67282 = r67279 - r67281;
        double r67283 = 2.0;
        double r67284 = r67282 / r67283;
        return r67284;
}

double f(double x) {
        double r67285 = x;
        double r67286 = -0.01738733746307203;
        bool r67287 = r67285 <= r67286;
        double r67288 = exp(r67285);
        double r67289 = sqrt(r67288);
        double r67290 = cbrt(r67289);
        double r67291 = cbrt(r67288);
        double r67292 = r67291 * r67290;
        double r67293 = r67290 * r67292;
        double r67294 = -r67285;
        double r67295 = exp(r67294);
        double r67296 = -r67295;
        double r67297 = fma(r67293, r67291, r67296);
        double r67298 = 2.0;
        double r67299 = r67297 / r67298;
        double r67300 = 0.3333333333333333;
        double r67301 = 3.0;
        double r67302 = pow(r67285, r67301);
        double r67303 = 0.016666666666666666;
        double r67304 = 5.0;
        double r67305 = pow(r67285, r67304);
        double r67306 = 2.0;
        double r67307 = r67306 * r67285;
        double r67308 = fma(r67303, r67305, r67307);
        double r67309 = fma(r67300, r67302, r67308);
        double r67310 = r67309 / r67298;
        double r67311 = r67287 ? r67299 : r67310;
        return r67311;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -0.01738733746307203

    1. Initial program 0.6

      \[\frac{e^{x} - e^{-x}}{2}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.8

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{e^{x}} \cdot \sqrt[3]{e^{x}}\right) \cdot \sqrt[3]{e^{x}}} - e^{-x}}{2}\]
    4. Applied fma-neg0.7

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\sqrt[3]{e^{x}} \cdot \sqrt[3]{e^{x}}, \sqrt[3]{e^{x}}, -e^{-x}\right)}}{2}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt0.7

      \[\leadsto \frac{\mathsf{fma}\left(\sqrt[3]{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}}} \cdot \sqrt[3]{e^{x}}, \sqrt[3]{e^{x}}, -e^{-x}\right)}{2}\]
    7. Applied cbrt-prod0.9

      \[\leadsto \frac{\mathsf{fma}\left(\color{blue}{\left(\sqrt[3]{\sqrt{e^{x}}} \cdot \sqrt[3]{\sqrt{e^{x}}}\right)} \cdot \sqrt[3]{e^{x}}, \sqrt[3]{e^{x}}, -e^{-x}\right)}{2}\]
    8. Applied associate-*l*0.8

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

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

    if -0.01738733746307203 < x

    1. Initial program 58.5

      \[\frac{e^{x} - e^{-x}}{2}\]
    2. Taylor expanded around 0 0.3

      \[\leadsto \frac{\color{blue}{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}}{2}\]
    3. Simplified0.3

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

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

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(FPCore (x)
  :name "Hyperbolic sine"
  :precision binary64
  (/ (- (exp x) (exp (- x))) 2))