Average Error: 58.1 → 0.6
Time: 16.8s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{\mathsf{fma}\left(2, x, \mathsf{fma}\left({x}^{5}, \frac{1}{60}, \frac{1}{3} \cdot \left(\left(x \cdot x\right) \cdot x\right)\right)\right)}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{\mathsf{fma}\left(2, x, \mathsf{fma}\left({x}^{5}, \frac{1}{60}, \frac{1}{3} \cdot \left(\left(x \cdot x\right) \cdot x\right)\right)\right)}{2}
double f(double x) {
        double r998079 = x;
        double r998080 = exp(r998079);
        double r998081 = -r998079;
        double r998082 = exp(r998081);
        double r998083 = r998080 - r998082;
        double r998084 = 2.0;
        double r998085 = r998083 / r998084;
        return r998085;
}

double f(double x) {
        double r998086 = 2.0;
        double r998087 = x;
        double r998088 = 5.0;
        double r998089 = pow(r998087, r998088);
        double r998090 = 0.016666666666666666;
        double r998091 = 0.3333333333333333;
        double r998092 = r998087 * r998087;
        double r998093 = r998092 * r998087;
        double r998094 = r998091 * r998093;
        double r998095 = fma(r998089, r998090, r998094);
        double r998096 = fma(r998086, r998087, r998095);
        double r998097 = r998096 / r998086;
        return r998097;
}

Error

Bits error versus x

Derivation

  1. Initial program 58.1

    \[\frac{e^{x} - e^{-x}}{2}\]
  2. Using strategy rm
  3. Applied flip--58.1

    \[\leadsto \frac{\color{blue}{\frac{e^{x} \cdot e^{x} - e^{-x} \cdot e^{-x}}{e^{x} + e^{-x}}}}{2}\]
  4. 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}\]
  5. Simplified0.6

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

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

Reproduce

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