Average Error: 9.5 → 0.0
Time: 19.8s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -75080727.03464014828205108642578125 \lor \neg \left(x \le 467.2547751661715551563247572630643844604\right):\\ \;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(1 \cdot x - \left(x + 1\right) \cdot 2\right) \cdot \left(x - 1\right) + \left(\left(x + 1\right) \cdot x\right) \cdot 1}{\left(\left(x + 1\right) \cdot x\right) \cdot \left(x - 1\right)}\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -75080727.03464014828205108642578125 \lor \neg \left(x \le 467.2547751661715551563247572630643844604\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\

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

\end{array}
double f(double x) {
        double r130711 = 1.0;
        double r130712 = x;
        double r130713 = r130712 + r130711;
        double r130714 = r130711 / r130713;
        double r130715 = 2.0;
        double r130716 = r130715 / r130712;
        double r130717 = r130714 - r130716;
        double r130718 = r130712 - r130711;
        double r130719 = r130711 / r130718;
        double r130720 = r130717 + r130719;
        return r130720;
}

double f(double x) {
        double r130721 = x;
        double r130722 = -75080727.03464015;
        bool r130723 = r130721 <= r130722;
        double r130724 = 467.25477516617156;
        bool r130725 = r130721 <= r130724;
        double r130726 = !r130725;
        bool r130727 = r130723 || r130726;
        double r130728 = 2.0;
        double r130729 = 1.0;
        double r130730 = 7.0;
        double r130731 = pow(r130721, r130730);
        double r130732 = r130729 / r130731;
        double r130733 = 5.0;
        double r130734 = pow(r130721, r130733);
        double r130735 = r130729 / r130734;
        double r130736 = 3.0;
        double r130737 = -r130736;
        double r130738 = pow(r130721, r130737);
        double r130739 = r130735 + r130738;
        double r130740 = r130732 + r130739;
        double r130741 = r130728 * r130740;
        double r130742 = 1.0;
        double r130743 = r130742 * r130721;
        double r130744 = r130721 + r130742;
        double r130745 = r130744 * r130728;
        double r130746 = r130743 - r130745;
        double r130747 = r130721 - r130742;
        double r130748 = r130746 * r130747;
        double r130749 = r130744 * r130721;
        double r130750 = r130749 * r130742;
        double r130751 = r130748 + r130750;
        double r130752 = r130749 * r130747;
        double r130753 = r130751 / r130752;
        double r130754 = r130727 ? r130741 : r130753;
        return r130754;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -75080727.03464015 or 467.25477516617156 < 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.5

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

      \[\leadsto \color{blue}{2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + \frac{1}{{x}^{3}}\right)\right)}\]
    4. Using strategy rm
    5. Applied pow-flip0.0

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

    if -75080727.03464015 < x < 467.25477516617156

    1. Initial program 0.4

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Using strategy rm
    3. Applied frac-sub0.4

      \[\leadsto \color{blue}{\frac{1 \cdot x - \left(x + 1\right) \cdot 2}{\left(x + 1\right) \cdot x}} + \frac{1}{x - 1}\]
    4. Applied frac-add0.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -75080727.03464014828205108642578125 \lor \neg \left(x \le 467.2547751661715551563247572630643844604\right):\\ \;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(1 \cdot x - \left(x + 1\right) \cdot 2\right) \cdot \left(x - 1\right) + \left(\left(x + 1\right) \cdot x\right) \cdot 1}{\left(\left(x + 1\right) \cdot x\right) \cdot \left(x - 1\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019294 
(FPCore (x)
  :name "3frac (problem 3.3.3)"
  :precision binary64

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

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