Average Error: 9.9 → 0.1
Time: 16.2s
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 r115313 = 1.0;
        double r115314 = x;
        double r115315 = r115314 + r115313;
        double r115316 = r115313 / r115315;
        double r115317 = 2.0;
        double r115318 = r115317 / r115314;
        double r115319 = r115316 - r115318;
        double r115320 = r115314 - r115313;
        double r115321 = r115313 / r115320;
        double r115322 = r115319 + r115321;
        return r115322;
}

double f(double x) {
        double r115323 = x;
        double r115324 = -17754.398693443713;
        bool r115325 = r115323 <= r115324;
        double r115326 = 1913.506658456775;
        bool r115327 = r115323 <= r115326;
        double r115328 = !r115327;
        bool r115329 = r115325 || r115328;
        double r115330 = 2.0;
        double r115331 = 7.0;
        double r115332 = pow(r115323, r115331);
        double r115333 = r115330 / r115332;
        double r115334 = 5.0;
        double r115335 = pow(r115323, r115334);
        double r115336 = r115330 / r115335;
        double r115337 = r115330 / r115323;
        double r115338 = r115323 * r115323;
        double r115339 = r115337 / r115338;
        double r115340 = r115336 + r115339;
        double r115341 = r115333 + r115340;
        double r115342 = 1.0;
        double r115343 = r115342 * r115323;
        double r115344 = r115323 + r115342;
        double r115345 = r115344 * r115330;
        double r115346 = r115343 - r115345;
        double r115347 = r115323 - r115342;
        double r115348 = r115346 * r115347;
        double r115349 = r115344 * r115323;
        double r115350 = r115349 * r115342;
        double r115351 = r115348 + r115350;
        double r115352 = r115349 * r115347;
        double r115353 = r115351 / r115352;
        double r115354 = r115329 ? r115341 : r115353;
        return r115354;
}

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))))