Average Error: 58.0 → 0.7
Time: 4.3s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{\left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right) + 2 \cdot x}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{\left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right) + 2 \cdot x}{2}
double f(double x) {
        double r56871 = x;
        double r56872 = exp(r56871);
        double r56873 = -r56871;
        double r56874 = exp(r56873);
        double r56875 = r56872 - r56874;
        double r56876 = 2.0;
        double r56877 = r56875 / r56876;
        return r56877;
}

double f(double x) {
        double r56878 = 0.3333333333333333;
        double r56879 = x;
        double r56880 = 3.0;
        double r56881 = pow(r56879, r56880);
        double r56882 = r56878 * r56881;
        double r56883 = 0.016666666666666666;
        double r56884 = 5.0;
        double r56885 = pow(r56879, r56884);
        double r56886 = r56883 * r56885;
        double r56887 = r56882 + r56886;
        double r56888 = 2.0;
        double r56889 = r56888 * r56879;
        double r56890 = r56887 + r56889;
        double r56891 = 2.0;
        double r56892 = r56890 / r56891;
        return r56892;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 58.0

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

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

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

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

Reproduce

herbie shell --seed 2020060 
(FPCore (x)
  :name "Hyperbolic sine"
  :precision binary64
  (/ (- (exp x) (exp (- x))) 2))