Average Error: 9.4 → 0.4
Time: 29.0s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.0055170474121684:\\ \;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\ \mathbf{elif}\;x \le 91.04565691167721:\\ \;\;\;\;\left(e^{-\log \left(1 + x\right)} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -1.0055170474121684:\\
\;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\

\mathbf{elif}\;x \le 91.04565691167721:\\
\;\;\;\;\left(e^{-\log \left(1 + x\right)} - \frac{2}{x}\right) + \frac{1}{x - 1}\\

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

\end{array}
double f(double x) {
        double r3086658 = 1.0;
        double r3086659 = x;
        double r3086660 = r3086659 + r3086658;
        double r3086661 = r3086658 / r3086660;
        double r3086662 = 2.0;
        double r3086663 = r3086662 / r3086659;
        double r3086664 = r3086661 - r3086663;
        double r3086665 = r3086659 - r3086658;
        double r3086666 = r3086658 / r3086665;
        double r3086667 = r3086664 + r3086666;
        return r3086667;
}

double f(double x) {
        double r3086668 = x;
        double r3086669 = -1.0055170474121684;
        bool r3086670 = r3086668 <= r3086669;
        double r3086671 = 2.0;
        double r3086672 = 5.0;
        double r3086673 = pow(r3086668, r3086672);
        double r3086674 = r3086671 / r3086673;
        double r3086675 = r3086668 * r3086668;
        double r3086676 = r3086675 * r3086668;
        double r3086677 = r3086671 / r3086676;
        double r3086678 = 7.0;
        double r3086679 = pow(r3086668, r3086678);
        double r3086680 = r3086671 / r3086679;
        double r3086681 = r3086677 + r3086680;
        double r3086682 = r3086674 + r3086681;
        double r3086683 = 91.04565691167721;
        bool r3086684 = r3086668 <= r3086683;
        double r3086685 = 1.0;
        double r3086686 = r3086685 + r3086668;
        double r3086687 = log(r3086686);
        double r3086688 = -r3086687;
        double r3086689 = exp(r3086688);
        double r3086690 = r3086671 / r3086668;
        double r3086691 = r3086689 - r3086690;
        double r3086692 = r3086668 - r3086685;
        double r3086693 = r3086685 / r3086692;
        double r3086694 = r3086691 + r3086693;
        double r3086695 = r3086684 ? r3086694 : r3086682;
        double r3086696 = r3086670 ? r3086682 : r3086695;
        return r3086696;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original9.4
Target0.3
Herbie0.4
\[\frac{2}{x \cdot \left(x \cdot x - 1\right)}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -1.0055170474121684 or 91.04565691167721 < x

    1. Initial program 19.0

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Taylor expanded around -inf 0.7

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

      \[\leadsto \color{blue}{\left(\frac{2}{x \cdot \left(x \cdot x\right)} + \frac{2}{{x}^{7}}\right) + \frac{2}{{x}^{5}}}\]

    if -1.0055170474121684 < x < 91.04565691167721

    1. Initial program 0.0

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.0

      \[\leadsto \left(\frac{1}{\color{blue}{1 \cdot \left(x + 1\right)}} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    4. Applied associate-/r*0.0

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

      \[\leadsto \left(\frac{\color{blue}{1}}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    6. Using strategy rm
    7. Applied add-exp-log0.0

      \[\leadsto \left(\frac{1}{\color{blue}{e^{\log \left(x + 1\right)}}} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    8. Applied rec-exp0.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.0055170474121684:\\ \;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\ \mathbf{elif}\;x \le 91.04565691167721:\\ \;\;\;\;\left(e^{-\log \left(1 + x\right)} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019144 
(FPCore (x)
  :name "3frac (problem 3.3.3)"

  :herbie-target
  (/ 2 (* x (- (* x x) 1)))

  (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))