Average Error: 39.6 → 0.3
Time: 13.4s
Precision: 64
\[\frac{e^{x} - 1}{x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.542453242293575935237953666856469681079 \cdot 10^{-4}:\\ \;\;\;\;\frac{\frac{e^{3 \cdot x}}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}} - \frac{\left(1 \cdot 1\right) \cdot 1}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}}}{x}\\ \mathbf{else}:\\ \;\;\;\;1 + \left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x\\ \end{array}\]
\frac{e^{x} - 1}{x}
\begin{array}{l}
\mathbf{if}\;x \le -1.542453242293575935237953666856469681079 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{e^{3 \cdot x}}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}} - \frac{\left(1 \cdot 1\right) \cdot 1}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}}}{x}\\

\mathbf{else}:\\
\;\;\;\;1 + \left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x\\

\end{array}
double f(double x) {
        double r3859499 = x;
        double r3859500 = exp(r3859499);
        double r3859501 = 1.0;
        double r3859502 = r3859500 - r3859501;
        double r3859503 = r3859502 / r3859499;
        return r3859503;
}

double f(double x) {
        double r3859504 = x;
        double r3859505 = -0.0001542453242293576;
        bool r3859506 = r3859504 <= r3859505;
        double r3859507 = 3.0;
        double r3859508 = r3859507 * r3859504;
        double r3859509 = exp(r3859508);
        double r3859510 = exp(r3859504);
        double r3859511 = 1.0;
        double r3859512 = r3859510 * r3859511;
        double r3859513 = r3859511 * r3859511;
        double r3859514 = r3859512 + r3859513;
        double r3859515 = r3859510 * r3859510;
        double r3859516 = r3859514 + r3859515;
        double r3859517 = r3859509 / r3859516;
        double r3859518 = r3859513 * r3859511;
        double r3859519 = r3859518 / r3859516;
        double r3859520 = r3859517 - r3859519;
        double r3859521 = r3859520 / r3859504;
        double r3859522 = 1.0;
        double r3859523 = 0.5;
        double r3859524 = 0.16666666666666666;
        double r3859525 = r3859504 * r3859524;
        double r3859526 = r3859523 + r3859525;
        double r3859527 = r3859526 * r3859504;
        double r3859528 = r3859522 + r3859527;
        double r3859529 = r3859506 ? r3859521 : r3859528;
        return r3859529;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original39.6
Target40.0
Herbie0.3
\[\begin{array}{l} \mathbf{if}\;x \lt 1 \land x \gt -1:\\ \;\;\;\;\frac{e^{x} - 1}{\log \left(e^{x}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{e^{x} - 1}{x}\\ \end{array}\]

Derivation

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

    1. Initial program 0.1

      \[\frac{e^{x} - 1}{x}\]
    2. Using strategy rm
    3. Applied flip3--0.1

      \[\leadsto \frac{\color{blue}{\frac{{\left(e^{x}\right)}^{3} - {1}^{3}}{e^{x} \cdot e^{x} + \left(1 \cdot 1 + e^{x} \cdot 1\right)}}}{x}\]
    4. Simplified0.0

      \[\leadsto \frac{\frac{\color{blue}{e^{3 \cdot x} - \left(1 \cdot 1\right) \cdot 1}}{e^{x} \cdot e^{x} + \left(1 \cdot 1 + e^{x} \cdot 1\right)}}{x}\]
    5. Using strategy rm
    6. Applied div-sub0.1

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

    if -0.0001542453242293576 < x

    1. Initial program 60.2

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

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

      \[\leadsto \color{blue}{x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right) + 1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.542453242293575935237953666856469681079 \cdot 10^{-4}:\\ \;\;\;\;\frac{\frac{e^{3 \cdot x}}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}} - \frac{\left(1 \cdot 1\right) \cdot 1}{\left(e^{x} \cdot 1 + 1 \cdot 1\right) + e^{x} \cdot e^{x}}}{x}\\ \mathbf{else}:\\ \;\;\;\;1 + \left(\frac{1}{2} + x \cdot \frac{1}{6}\right) \cdot x\\ \end{array}\]

Reproduce

herbie shell --seed 2019174 
(FPCore (x)
  :name "Kahan's exp quotient"

  :herbie-target
  (if (and (< x 1.0) (> x -1.0)) (/ (- (exp x) 1.0) (log (exp x))) (/ (- (exp x) 1.0) x))

  (/ (- (exp x) 1.0) x))