Average Error: 9.5 → 0.3
Time: 16.0s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -136532428.39027130603790283203125 \lor \neg \left(x \le 642.4163412587074617476901039481163024902\right):\\ \;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{{x}^{3}} + \frac{2}{{x}^{7}}\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 -136532428.39027130603790283203125 \lor \neg \left(x \le 642.4163412587074617476901039481163024902\right):\\
\;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{{x}^{3}} + \frac{2}{{x}^{7}}\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 r113924 = 1.0;
        double r113925 = x;
        double r113926 = r113925 + r113924;
        double r113927 = r113924 / r113926;
        double r113928 = 2.0;
        double r113929 = r113928 / r113925;
        double r113930 = r113927 - r113929;
        double r113931 = r113925 - r113924;
        double r113932 = r113924 / r113931;
        double r113933 = r113930 + r113932;
        return r113933;
}

double f(double x) {
        double r113934 = x;
        double r113935 = -136532428.3902713;
        bool r113936 = r113934 <= r113935;
        double r113937 = 642.4163412587075;
        bool r113938 = r113934 <= r113937;
        double r113939 = !r113938;
        bool r113940 = r113936 || r113939;
        double r113941 = 2.0;
        double r113942 = 5.0;
        double r113943 = pow(r113934, r113942);
        double r113944 = r113941 / r113943;
        double r113945 = 3.0;
        double r113946 = pow(r113934, r113945);
        double r113947 = r113941 / r113946;
        double r113948 = 7.0;
        double r113949 = pow(r113934, r113948);
        double r113950 = r113941 / r113949;
        double r113951 = r113947 + r113950;
        double r113952 = r113944 + r113951;
        double r113953 = 1.0;
        double r113954 = r113953 * r113934;
        double r113955 = r113934 + r113953;
        double r113956 = r113955 * r113941;
        double r113957 = r113954 - r113956;
        double r113958 = r113934 - r113953;
        double r113959 = r113957 * r113958;
        double r113960 = r113955 * r113934;
        double r113961 = r113960 * r113953;
        double r113962 = r113959 + r113961;
        double r113963 = r113960 * r113958;
        double r113964 = r113962 / r113963;
        double r113965 = r113940 ? r113952 : r113964;
        return r113965;
}

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.3
\[\frac{2}{x \cdot \left(x \cdot x - 1\right)}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -136532428.3902713 or 642.4163412587075 < x

    1. Initial program 19.1

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

      \[\leadsto \left(\frac{1}{x + 1} - \frac{2}{x}\right) + \color{blue}{\left(\sqrt[3]{\frac{1}{x - 1}} \cdot \sqrt[3]{\frac{1}{x - 1}}\right) \cdot \sqrt[3]{\frac{1}{x - 1}}}\]
    4. 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)}\]
    5. Simplified0.5

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

    if -136532428.3902713 < x < 642.4163412587075

    1. Initial program 0.3

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

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

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