Average Error: 9.9 → 0.1
Time: 16.1s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -17754.39869344371254555881023406982421875 \lor \neg \left(x \le 1913.506658456775085141998715698719024658\right):\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\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 -17754.39869344371254555881023406982421875 \lor \neg \left(x \le 1913.506658456775085141998715698719024658\right):\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\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 r117953 = 1.0;
        double r117954 = x;
        double r117955 = r117954 + r117953;
        double r117956 = r117953 / r117955;
        double r117957 = 2.0;
        double r117958 = r117957 / r117954;
        double r117959 = r117956 - r117958;
        double r117960 = r117954 - r117953;
        double r117961 = r117953 / r117960;
        double r117962 = r117959 + r117961;
        return r117962;
}

double f(double x) {
        double r117963 = x;
        double r117964 = -17754.398693443713;
        bool r117965 = r117963 <= r117964;
        double r117966 = 1913.506658456775;
        bool r117967 = r117963 <= r117966;
        double r117968 = !r117967;
        bool r117969 = r117965 || r117968;
        double r117970 = 2.0;
        double r117971 = 7.0;
        double r117972 = pow(r117963, r117971);
        double r117973 = r117970 / r117972;
        double r117974 = 5.0;
        double r117975 = pow(r117963, r117974);
        double r117976 = r117970 / r117975;
        double r117977 = r117970 / r117963;
        double r117978 = r117963 * r117963;
        double r117979 = r117977 / r117978;
        double r117980 = r117976 + r117979;
        double r117981 = r117973 + r117980;
        double r117982 = 1.0;
        double r117983 = r117982 * r117963;
        double r117984 = r117963 + r117982;
        double r117985 = r117984 * r117970;
        double r117986 = r117983 - r117985;
        double r117987 = r117963 - r117982;
        double r117988 = r117986 * r117987;
        double r117989 = r117984 * r117963;
        double r117990 = r117989 * r117982;
        double r117991 = r117988 + r117990;
        double r117992 = r117989 * r117987;
        double r117993 = r117991 / r117992;
        double r117994 = r117969 ? r117981 : r117993;
        return r117994;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -17754.398693443713 or 1913.506658456775 < x

    1. Initial program 19.6

      \[\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}{\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{3}}\right)}\]
    4. Using strategy rm
    5. Applied cube-mult0.5

      \[\leadsto \frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{\color{blue}{x \cdot \left(x \cdot x\right)}}\right)\]
    6. Applied associate-/r*0.1

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

    if -17754.398693443713 < x < 1913.506658456775

    1. Initial program 0.2

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

      \[\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.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -17754.39869344371254555881023406982421875 \lor \neg \left(x \le 1913.506658456775085141998715698719024658\right):\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\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 2019325 
(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))))