Average Error: 9.5 → 0.0
Time: 3.8s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -133365124.473443 \lor \neg \left(x \le 472.426513921307503\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 -133365124.473443 \lor \neg \left(x \le 472.426513921307503\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 r103719 = 1.0;
        double r103720 = x;
        double r103721 = r103720 + r103719;
        double r103722 = r103719 / r103721;
        double r103723 = 2.0;
        double r103724 = r103723 / r103720;
        double r103725 = r103722 - r103724;
        double r103726 = r103720 - r103719;
        double r103727 = r103719 / r103726;
        double r103728 = r103725 + r103727;
        return r103728;
}

double f(double x) {
        double r103729 = x;
        double r103730 = -133365124.473443;
        bool r103731 = r103729 <= r103730;
        double r103732 = 472.4265139213075;
        bool r103733 = r103729 <= r103732;
        double r103734 = !r103733;
        bool r103735 = r103731 || r103734;
        double r103736 = 2.0;
        double r103737 = 1.0;
        double r103738 = 7.0;
        double r103739 = pow(r103729, r103738);
        double r103740 = r103737 / r103739;
        double r103741 = 5.0;
        double r103742 = pow(r103729, r103741);
        double r103743 = r103737 / r103742;
        double r103744 = 3.0;
        double r103745 = -r103744;
        double r103746 = pow(r103729, r103745);
        double r103747 = r103743 + r103746;
        double r103748 = r103740 + r103747;
        double r103749 = r103736 * r103748;
        double r103750 = 1.0;
        double r103751 = r103750 * r103729;
        double r103752 = r103729 + r103750;
        double r103753 = r103752 * r103736;
        double r103754 = r103751 - r103753;
        double r103755 = r103729 - r103750;
        double r103756 = r103754 * r103755;
        double r103757 = r103752 * r103729;
        double r103758 = r103757 * r103750;
        double r103759 = r103756 + r103758;
        double r103760 = r103757 * r103755;
        double r103761 = r103759 / r103760;
        double r103762 = r103735 ? r103749 : r103761;
        return r103762;
}

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 < -133365124.473443 or 472.4265139213075 < x

    1. Initial program 19.1

      \[\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 -133365124.473443 < x < 472.4265139213075

    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 -133365124.473443 \lor \neg \left(x \le 472.426513921307503\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 2020059 
(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))))