Average Error: 57.9 → 0.7
Time: 15.6s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, \mathsf{fma}\left(\frac{1}{3}, x \cdot x, 2\right) \cdot x\right)}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, \mathsf{fma}\left(\frac{1}{3}, x \cdot x, 2\right) \cdot x\right)}{2}
double f(double x) {
        double r2506016 = x;
        double r2506017 = exp(r2506016);
        double r2506018 = -r2506016;
        double r2506019 = exp(r2506018);
        double r2506020 = r2506017 - r2506019;
        double r2506021 = 2.0;
        double r2506022 = r2506020 / r2506021;
        return r2506022;
}

double f(double x) {
        double r2506023 = x;
        double r2506024 = 5.0;
        double r2506025 = pow(r2506023, r2506024);
        double r2506026 = 0.016666666666666666;
        double r2506027 = 0.3333333333333333;
        double r2506028 = r2506023 * r2506023;
        double r2506029 = 2.0;
        double r2506030 = fma(r2506027, r2506028, r2506029);
        double r2506031 = r2506030 * r2506023;
        double r2506032 = fma(r2506025, r2506026, r2506031);
        double r2506033 = r2506032 / r2506029;
        return r2506033;
}

Error

Bits error versus x

Derivation

  1. Initial program 57.9

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

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

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, \mathsf{fma}\left(\frac{1}{3}, x \cdot x, 2\right), {x}^{5} \cdot \frac{1}{60}\right)}}{2}\]
  4. Taylor expanded around 0 0.7

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

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, \mathsf{fma}\left(\frac{1}{3}, x \cdot x, 2\right) \cdot x\right)}}{2}\]
  6. Final simplification0.7

    \[\leadsto \frac{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, \mathsf{fma}\left(\frac{1}{3}, x \cdot x, 2\right) \cdot x\right)}{2}\]

Reproduce

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