Average Error: 58.1 → 0.5
Time: 27.3s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(2 \cdot x + \left(\frac{1}{3} \cdot \left(x \cdot x\right)\right) \cdot x\right))_*}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(2 \cdot x + \left(\frac{1}{3} \cdot \left(x \cdot x\right)\right) \cdot x\right))_*}{2}
double f(double x) {
        double r11225477 = x;
        double r11225478 = exp(r11225477);
        double r11225479 = -r11225477;
        double r11225480 = exp(r11225479);
        double r11225481 = r11225478 - r11225480;
        double r11225482 = 2.0;
        double r11225483 = r11225481 / r11225482;
        return r11225483;
}

double f(double x) {
        double r11225484 = 0.016666666666666666;
        double r11225485 = x;
        double r11225486 = 5.0;
        double r11225487 = pow(r11225485, r11225486);
        double r11225488 = 2.0;
        double r11225489 = r11225488 * r11225485;
        double r11225490 = 0.3333333333333333;
        double r11225491 = r11225485 * r11225485;
        double r11225492 = r11225490 * r11225491;
        double r11225493 = r11225492 * r11225485;
        double r11225494 = r11225489 + r11225493;
        double r11225495 = fma(r11225484, r11225487, r11225494);
        double r11225496 = r11225495 / r11225488;
        return r11225496;
}

Error

Bits error versus x

Derivation

  1. Initial program 58.1

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

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

    \[\leadsto \frac{\color{blue}{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(x \cdot (\frac{1}{3} \cdot \left(x \cdot x\right) + 2)_*\right))_*}}{2}\]
  4. Using strategy rm
  5. Applied fma-udef0.5

    \[\leadsto \frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(x \cdot \color{blue}{\left(\frac{1}{3} \cdot \left(x \cdot x\right) + 2\right)}\right))_*}{2}\]
  6. Applied distribute-lft-in0.5

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

    \[\leadsto \frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(2 \cdot x + \left(\frac{1}{3} \cdot \left(x \cdot x\right)\right) \cdot x\right))_*}{2}\]

Reproduce

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