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

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

\end{array}
double f(double x) {
        double r71681 = x;
        double r71682 = exp(r71681);
        double r71683 = 1.0;
        double r71684 = r71682 - r71683;
        double r71685 = r71684 / r71681;
        return r71685;
}

double f(double x) {
        double r71686 = x;
        double r71687 = -0.00017098774397487554;
        bool r71688 = r71686 <= r71687;
        double r71689 = exp(r71686);
        double r71690 = 3.0;
        double r71691 = pow(r71689, r71690);
        double r71692 = 1.0;
        double r71693 = pow(r71692, r71690);
        double r71694 = r71691 - r71693;
        double r71695 = r71692 + r71689;
        double r71696 = r71692 * r71695;
        double r71697 = r71686 + r71686;
        double r71698 = exp(r71697);
        double r71699 = r71696 + r71698;
        double r71700 = r71699 * r71686;
        double r71701 = r71694 / r71700;
        double r71702 = 2.0;
        double r71703 = pow(r71686, r71702);
        double r71704 = 0.16666666666666666;
        double r71705 = r71686 * r71704;
        double r71706 = 0.5;
        double r71707 = r71705 + r71706;
        double r71708 = r71703 * r71707;
        double r71709 = r71708 + r71686;
        double r71710 = r71709 / r71686;
        double r71711 = r71688 ? r71701 : r71710;
        return r71711;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original39.5
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.00017098774397487554

    1. Initial program 0.0

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

      \[\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. Applied associate-/l/0.0

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

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

    if -0.00017098774397487554 < x

    1. Initial program 60.2

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

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

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

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

Reproduce

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

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

  (/ (- (exp x) 1) x))