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

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

\end{array}
double f(double x) {
        double r69330 = x;
        double r69331 = exp(r69330);
        double r69332 = 1.0;
        double r69333 = r69331 - r69332;
        double r69334 = r69333 / r69330;
        return r69334;
}

double f(double x) {
        double r69335 = x;
        double r69336 = -0.00021407398444296693;
        bool r69337 = r69335 <= r69336;
        double r69338 = exp(r69335);
        double r69339 = sqrt(r69338);
        double r69340 = 1.0;
        double r69341 = sqrt(r69340);
        double r69342 = r69339 + r69341;
        double r69343 = 3.0;
        double r69344 = pow(r69339, r69343);
        double r69345 = pow(r69341, r69343);
        double r69346 = r69344 - r69345;
        double r69347 = r69339 * r69341;
        double r69348 = r69340 + r69347;
        double r69349 = r69338 + r69348;
        double r69350 = r69346 / r69349;
        double r69351 = r69350 / r69335;
        double r69352 = r69342 * r69351;
        double r69353 = 0.5;
        double r69354 = 0.16666666666666666;
        double r69355 = r69354 * r69335;
        double r69356 = r69353 + r69355;
        double r69357 = r69335 * r69356;
        double r69358 = 1.0;
        double r69359 = r69357 + r69358;
        double r69360 = r69337 ? r69352 : r69359;
        return r69360;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original40.1
Target40.4
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.00021407398444296693

    1. Initial program 0.1

      \[\frac{e^{x} - 1}{x}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.1

      \[\leadsto \frac{e^{x} - 1}{\color{blue}{1 \cdot x}}\]
    4. Applied add-sqr-sqrt0.1

      \[\leadsto \frac{e^{x} - \color{blue}{\sqrt{1} \cdot \sqrt{1}}}{1 \cdot x}\]
    5. Applied add-sqr-sqrt0.1

      \[\leadsto \frac{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}} - \sqrt{1} \cdot \sqrt{1}}{1 \cdot x}\]
    6. Applied difference-of-squares0.1

      \[\leadsto \frac{\color{blue}{\left(\sqrt{e^{x}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{x}} - \sqrt{1}\right)}}{1 \cdot x}\]
    7. Applied times-frac0.1

      \[\leadsto \color{blue}{\frac{\sqrt{e^{x}} + \sqrt{1}}{1} \cdot \frac{\sqrt{e^{x}} - \sqrt{1}}{x}}\]
    8. Simplified0.1

      \[\leadsto \color{blue}{\left(\sqrt{e^{x}} + \sqrt{1}\right)} \cdot \frac{\sqrt{e^{x}} - \sqrt{1}}{x}\]
    9. Using strategy rm
    10. Applied flip3--0.1

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

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

    if -0.00021407398444296693 < x

    1. Initial program 60.2

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

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

Reproduce

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