Average Error: 58.1 → 0.3
Time: 18.7s
Precision: 64
\[\frac{e^{x} - e^{-x}}{2}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.01288229977934218090096507580710749607533:\\ \;\;\;\;\frac{\frac{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}}{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}} \cdot \left(e^{x} - e^{-x}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\ \end{array}\]
\frac{e^{x} - e^{-x}}{2}
\begin{array}{l}
\mathbf{if}\;x \le -0.01288229977934218090096507580710749607533:\\
\;\;\;\;\frac{\frac{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}}{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}} \cdot \left(e^{x} - e^{-x}\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\

\end{array}
double f(double x) {
        double r40912 = x;
        double r40913 = exp(r40912);
        double r40914 = -r40912;
        double r40915 = exp(r40914);
        double r40916 = r40913 - r40915;
        double r40917 = 2.0;
        double r40918 = r40916 / r40917;
        return r40918;
}

double f(double x) {
        double r40919 = x;
        double r40920 = -0.012882299779342181;
        bool r40921 = r40919 <= r40920;
        double r40922 = exp(r40919);
        double r40923 = 2.0;
        double r40924 = pow(r40922, r40923);
        double r40925 = -2.0;
        double r40926 = exp(r40925);
        double r40927 = pow(r40926, r40919);
        double r40928 = r40924 - r40927;
        double r40929 = r40928 / r40928;
        double r40930 = -r40919;
        double r40931 = exp(r40930);
        double r40932 = r40922 - r40931;
        double r40933 = r40929 * r40932;
        double r40934 = 2.0;
        double r40935 = r40933 / r40934;
        double r40936 = 0.3333333333333333;
        double r40937 = 3.0;
        double r40938 = pow(r40919, r40937);
        double r40939 = 0.016666666666666666;
        double r40940 = 5.0;
        double r40941 = pow(r40919, r40940);
        double r40942 = r40923 * r40919;
        double r40943 = fma(r40939, r40941, r40942);
        double r40944 = fma(r40936, r40938, r40943);
        double r40945 = r40944 / r40934;
        double r40946 = r40921 ? r40935 : r40945;
        return r40946;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -0.012882299779342181

    1. Initial program 0.8

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

      \[\leadsto \frac{\color{blue}{\frac{e^{x} \cdot e^{x} - e^{-x} \cdot e^{-x}}{e^{x} + e^{-x}}}}{2}\]
    4. Simplified5.1

      \[\leadsto \frac{\frac{\color{blue}{e^{x + x} - e^{x \cdot -2}}}{e^{x} + e^{-x}}}{2}\]
    5. Using strategy rm
    6. Applied flip-+5.1

      \[\leadsto \frac{\frac{e^{x + x} - e^{x \cdot -2}}{\color{blue}{\frac{e^{x} \cdot e^{x} - e^{-x} \cdot e^{-x}}{e^{x} - e^{-x}}}}}{2}\]
    7. Applied associate-/r/5.1

      \[\leadsto \frac{\color{blue}{\frac{e^{x + x} - e^{x \cdot -2}}{e^{x} \cdot e^{x} - e^{-x} \cdot e^{-x}} \cdot \left(e^{x} - e^{-x}\right)}}{2}\]
    8. Simplified5.2

      \[\leadsto \frac{\color{blue}{\frac{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}}{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}}} \cdot \left(e^{x} - e^{-x}\right)}{2}\]

    if -0.012882299779342181 < x

    1. Initial program 58.6

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

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

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.01288229977934218090096507580710749607533:\\ \;\;\;\;\frac{\frac{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}}{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}} \cdot \left(e^{x} - e^{-x}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\ \end{array}\]

Reproduce

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