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

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

\end{array}
double f(double x) {
        double r50240 = x;
        double r50241 = exp(r50240);
        double r50242 = -r50240;
        double r50243 = exp(r50242);
        double r50244 = r50241 - r50243;
        double r50245 = 2.0;
        double r50246 = r50244 / r50245;
        return r50246;
}

double f(double x) {
        double r50247 = x;
        double r50248 = -0.012882299779342181;
        bool r50249 = r50247 <= r50248;
        double r50250 = -r50247;
        double r50251 = exp(r50250);
        double r50252 = fabs(r50251);
        double r50253 = exp(r50247);
        double r50254 = fabs(r50253);
        double r50255 = r50252 + r50254;
        double r50256 = r50254 - r50252;
        double r50257 = r50255 * r50256;
        double r50258 = r50253 + r50251;
        double r50259 = r50257 / r50258;
        double r50260 = 2.0;
        double r50261 = r50259 / r50260;
        double r50262 = 0.3333333333333333;
        double r50263 = 3.0;
        double r50264 = pow(r50247, r50263);
        double r50265 = r50262 * r50264;
        double r50266 = 0.016666666666666666;
        double r50267 = 5.0;
        double r50268 = pow(r50247, r50267);
        double r50269 = r50266 * r50268;
        double r50270 = r50265 + r50269;
        double r50271 = 2.0;
        double r50272 = r50271 * r50247;
        double r50273 = r50270 + r50272;
        double r50274 = r50273 / r50260;
        double r50275 = r50249 ? r50261 : r50274;
        return r50275;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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 add-sqr-sqrt5.4

      \[\leadsto \frac{\frac{e^{x + x} - \color{blue}{\sqrt{e^{x \cdot -2}} \cdot \sqrt{e^{x \cdot -2}}}}{e^{x} + e^{-x}}}{2}\]
    7. Applied add-sqr-sqrt5.5

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{e^{x + x}} \cdot \sqrt{e^{x + x}}} - \sqrt{e^{x \cdot -2}} \cdot \sqrt{e^{x \cdot -2}}}{e^{x} + e^{-x}}}{2}\]
    8. Applied difference-of-squares5.4

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

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

      \[\leadsto \frac{\frac{\left(\left|e^{-x}\right| + \left|e^{x}\right|\right) \cdot \color{blue}{\left(\left|e^{x}\right| - \left|e^{-x}\right|\right)}}{e^{x} + e^{-x}}}{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. Using strategy rm
    4. Applied associate-+r+0.3

      \[\leadsto \frac{\color{blue}{\left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right) + 2 \cdot x}}{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(\left|e^{-x}\right| + \left|e^{x}\right|\right) \cdot \left(\left|e^{x}\right| - \left|e^{-x}\right|\right)}{e^{x} + e^{-x}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right) + 2 \cdot x}{2}\\ \end{array}\]

Reproduce

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