Average Error: 57.9 → 0.6
Time: 13.2s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\frac{\mathsf{fma}\left(\sqrt{e^{-x}}, x, \left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \mathsf{fma}\left(\frac{1}{24}, {x}^{3}, \frac{1}{1920} \cdot {x}^{5}\right) + x \cdot \sqrt{e^{x}}\right)}{2}\]
\frac{e^{x} - e^{-x}}{2}
\frac{\mathsf{fma}\left(\sqrt{e^{-x}}, x, \left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \mathsf{fma}\left(\frac{1}{24}, {x}^{3}, \frac{1}{1920} \cdot {x}^{5}\right) + x \cdot \sqrt{e^{x}}\right)}{2}
double f(double x) {
        double r38028 = x;
        double r38029 = exp(r38028);
        double r38030 = -r38028;
        double r38031 = exp(r38030);
        double r38032 = r38029 - r38031;
        double r38033 = 2.0;
        double r38034 = r38032 / r38033;
        return r38034;
}

double f(double x) {
        double r38035 = x;
        double r38036 = -r38035;
        double r38037 = exp(r38036);
        double r38038 = sqrt(r38037);
        double r38039 = exp(r38035);
        double r38040 = sqrt(r38039);
        double r38041 = r38040 + r38038;
        double r38042 = 0.041666666666666664;
        double r38043 = 3.0;
        double r38044 = pow(r38035, r38043);
        double r38045 = 0.0005208333333333333;
        double r38046 = 5.0;
        double r38047 = pow(r38035, r38046);
        double r38048 = r38045 * r38047;
        double r38049 = fma(r38042, r38044, r38048);
        double r38050 = r38041 * r38049;
        double r38051 = r38035 * r38040;
        double r38052 = r38050 + r38051;
        double r38053 = fma(r38038, r38035, r38052);
        double r38054 = 2.0;
        double r38055 = r38053 / r38054;
        return r38055;
}

Error

Bits error versus x

Derivation

  1. Initial program 57.9

    \[\frac{e^{x} - e^{-x}}{2}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt58.0

    \[\leadsto \frac{e^{x} - \color{blue}{\sqrt{e^{-x}} \cdot \sqrt{e^{-x}}}}{2}\]
  4. Applied add-sqr-sqrt58.0

    \[\leadsto \frac{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}} - \sqrt{e^{-x}} \cdot \sqrt{e^{-x}}}{2}\]
  5. Applied difference-of-squares58.0

    \[\leadsto \frac{\color{blue}{\left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \left(\sqrt{e^{x}} - \sqrt{e^{-x}}\right)}}{2}\]
  6. Taylor expanded around 0 0.6

    \[\leadsto \frac{\left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{1920} \cdot {x}^{5} + x\right)\right)}}{2}\]
  7. Simplified0.6

    \[\leadsto \frac{\left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \color{blue}{\mathsf{fma}\left(\frac{1}{24}, {x}^{3}, \mathsf{fma}\left(\frac{1}{1920}, {x}^{5}, x\right)\right)}}{2}\]
  8. Taylor expanded around -inf 0.6

    \[\leadsto \frac{\color{blue}{x \cdot \sqrt{e^{-1 \cdot x}} + \left(\frac{1}{1920} \cdot \left({x}^{5} \cdot \sqrt{e^{x}}\right) + \left(\frac{1}{1920} \cdot \left({x}^{5} \cdot \sqrt{e^{-1 \cdot x}}\right) + \left(x \cdot \sqrt{e^{x}} + \left(\frac{1}{24} \cdot \left({x}^{3} \cdot \sqrt{e^{x}}\right) + \frac{1}{24} \cdot \left({x}^{3} \cdot \sqrt{e^{-1 \cdot x}}\right)\right)\right)\right)\right)}}{2}\]
  9. Simplified0.6

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\sqrt{e^{-x}}, x, \left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \mathsf{fma}\left(\frac{1}{24}, {x}^{3}, \frac{1}{1920} \cdot {x}^{5}\right) + x \cdot \sqrt{e^{x}}\right)}}{2}\]
  10. Final simplification0.6

    \[\leadsto \frac{\mathsf{fma}\left(\sqrt{e^{-x}}, x, \left(\sqrt{e^{x}} + \sqrt{e^{-x}}\right) \cdot \mathsf{fma}\left(\frac{1}{24}, {x}^{3}, \frac{1}{1920} \cdot {x}^{5}\right) + x \cdot \sqrt{e^{x}}\right)}{2}\]

Reproduce

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