Average Error: 58.0 → 0.6
Time: 17.1s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{\mathsf{fma}\left(x, \left(\mathsf{fma}\left(x, \left(x \cdot \frac{1}{3}\right), 2\right)\right), \left(\frac{1}{60} \cdot {x}^{5}\right)\right)}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{\mathsf{fma}\left(x, \left(\mathsf{fma}\left(x, \left(x \cdot \frac{1}{3}\right), 2\right)\right), \left(\frac{1}{60} \cdot {x}^{5}\right)\right)}{2}
double f(double x) {
        double r2473000 = x;
        double r2473001 = exp(r2473000);
        double r2473002 = -r2473000;
        double r2473003 = exp(r2473002);
        double r2473004 = r2473001 - r2473003;
        double r2473005 = 2.0;
        double r2473006 = r2473004 / r2473005;
        return r2473006;
}

double f(double x) {
        double r2473007 = x;
        double r2473008 = 0.3333333333333333;
        double r2473009 = r2473007 * r2473008;
        double r2473010 = 2.0;
        double r2473011 = fma(r2473007, r2473009, r2473010);
        double r2473012 = 0.016666666666666666;
        double r2473013 = 5.0;
        double r2473014 = pow(r2473007, r2473013);
        double r2473015 = r2473012 * r2473014;
        double r2473016 = fma(r2473007, r2473011, r2473015);
        double r2473017 = r2473016 / r2473010;
        return r2473017;
}

Error

Bits error versus x

Derivation

  1. Initial program 58.0

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

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

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

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

Reproduce

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