Average Error: 58.1 → 0.6
Time: 10.7s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(x \cdot (\frac{1}{3} \cdot \left(x \cdot x\right) + 2)_*\right))_*}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{(\frac{1}{60} \cdot \left({x}^{5}\right) + \left(x \cdot (\frac{1}{3} \cdot \left(x \cdot x\right) + 2)_*\right))_*}{2}
double f(double x) {
        double r5745932 = x;
        double r5745933 = exp(r5745932);
        double r5745934 = -r5745932;
        double r5745935 = exp(r5745934);
        double r5745936 = r5745933 - r5745935;
        double r5745937 = 2.0;
        double r5745938 = r5745936 / r5745937;
        return r5745938;
}

double f(double x) {
        double r5745939 = 0.016666666666666666;
        double r5745940 = x;
        double r5745941 = 5.0;
        double r5745942 = pow(r5745940, r5745941);
        double r5745943 = 0.3333333333333333;
        double r5745944 = r5745940 * r5745940;
        double r5745945 = 2.0;
        double r5745946 = fma(r5745943, r5745944, r5745945);
        double r5745947 = r5745940 * r5745946;
        double r5745948 = fma(r5745939, r5745942, r5745947);
        double r5745949 = r5745948 / r5745945;
        return r5745949;
}

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.6

    \[\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. Final simplification0.6

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

Reproduce

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