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

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

\end{array}
double f(double x) {
        double r84980 = x;
        double r84981 = exp(r84980);
        double r84982 = 1.0;
        double r84983 = r84981 - r84982;
        double r84984 = r84983 / r84980;
        return r84984;
}

double f(double x) {
        double r84985 = x;
        double r84986 = -0.00016134030061260165;
        bool r84987 = r84985 <= r84986;
        double r84988 = exp(r84985);
        double r84989 = r84988 * r84988;
        double r84990 = r84989 * r84989;
        double r84991 = 1.0;
        double r84992 = r84991 * r84991;
        double r84993 = r84992 * r84992;
        double r84994 = r84990 - r84993;
        double r84995 = r84988 + r84991;
        double r84996 = r84995 * r84985;
        double r84997 = 2.0;
        double r84998 = pow(r84988, r84997);
        double r84999 = r84998 + r84992;
        double r85000 = r84996 * r84999;
        double r85001 = r84994 / r85000;
        double r85002 = r84985 * r84985;
        double r85003 = 0.16666666666666666;
        double r85004 = r84985 * r85003;
        double r85005 = 0.5;
        double r85006 = r85004 + r85005;
        double r85007 = r85002 * r85006;
        double r85008 = r84985 + r85007;
        double r85009 = r85008 / r84985;
        double r85010 = r84987 ? r85001 : r85009;
        return r85010;
}

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.00016134030061260165

    1. Initial program 0.0

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

      \[\leadsto \frac{\color{blue}{\frac{e^{x} \cdot e^{x} - 1 \cdot 1}{e^{x} + 1}}}{x}\]
    4. Applied associate-/l/0.0

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

      \[\leadsto \frac{\color{blue}{\frac{\left(e^{x} \cdot e^{x}\right) \cdot \left(e^{x} \cdot e^{x}\right) - \left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)}{e^{x} \cdot e^{x} + 1 \cdot 1}}}{x \cdot \left(e^{x} + 1\right)}\]
    7. Applied associate-/l/0.0

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

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

    if -0.00016134030061260165 < x

    1. Initial program 60.1

      \[\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 + \left(x \cdot x\right) \cdot \left(x \cdot \frac{1}{6} + \frac{1}{2}\right)}}{x}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

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

Reproduce

herbie shell --seed 2020042 
(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))