Average Error: 9.9 → 0.1
Time: 18.5s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -97.23298484104901717728353105485439300537 \lor \neg \left(x \le 104.1495985043723351282096700742840766907\right):\\ \;\;\;\;\left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{7}}\right) + \frac{\frac{2}{x}}{x \cdot x}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{{\left(\frac{1}{x + 1}\right)}^{3}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -97.23298484104901717728353105485439300537 \lor \neg \left(x \le 104.1495985043723351282096700742840766907\right):\\
\;\;\;\;\left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{7}}\right) + \frac{\frac{2}{x}}{x \cdot x}\\

\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{{\left(\frac{1}{x + 1}\right)}^{3}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\

\end{array}
double f(double x) {
        double r126302 = 1.0;
        double r126303 = x;
        double r126304 = r126303 + r126302;
        double r126305 = r126302 / r126304;
        double r126306 = 2.0;
        double r126307 = r126306 / r126303;
        double r126308 = r126305 - r126307;
        double r126309 = r126303 - r126302;
        double r126310 = r126302 / r126309;
        double r126311 = r126308 + r126310;
        return r126311;
}

double f(double x) {
        double r126312 = x;
        double r126313 = -97.23298484104902;
        bool r126314 = r126312 <= r126313;
        double r126315 = 104.14959850437234;
        bool r126316 = r126312 <= r126315;
        double r126317 = !r126316;
        bool r126318 = r126314 || r126317;
        double r126319 = 2.0;
        double r126320 = 5.0;
        double r126321 = pow(r126312, r126320);
        double r126322 = r126319 / r126321;
        double r126323 = 7.0;
        double r126324 = pow(r126312, r126323);
        double r126325 = r126319 / r126324;
        double r126326 = r126322 + r126325;
        double r126327 = r126319 / r126312;
        double r126328 = r126312 * r126312;
        double r126329 = r126327 / r126328;
        double r126330 = r126326 + r126329;
        double r126331 = 1.0;
        double r126332 = r126312 + r126331;
        double r126333 = r126331 / r126332;
        double r126334 = 3.0;
        double r126335 = pow(r126333, r126334);
        double r126336 = cbrt(r126335);
        double r126337 = r126336 - r126327;
        double r126338 = r126312 - r126331;
        double r126339 = r126331 / r126338;
        double r126340 = r126337 + r126339;
        double r126341 = r126318 ? r126330 : r126340;
        return r126341;
}

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

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

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

    if -97.23298484104902 < x < 104.14959850437234

    1. Initial program 0.0

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

      \[\leadsto \left(\frac{1}{\color{blue}{\sqrt[3]{\left(\left(x + 1\right) \cdot \left(x + 1\right)\right) \cdot \left(x + 1\right)}}} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    4. Applied add-cbrt-cube0.0

      \[\leadsto \left(\frac{\color{blue}{\sqrt[3]{\left(1 \cdot 1\right) \cdot 1}}}{\sqrt[3]{\left(\left(x + 1\right) \cdot \left(x + 1\right)\right) \cdot \left(x + 1\right)}} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    5. Applied cbrt-undiv0.0

      \[\leadsto \left(\color{blue}{\sqrt[3]{\frac{\left(1 \cdot 1\right) \cdot 1}{\left(\left(x + 1\right) \cdot \left(x + 1\right)\right) \cdot \left(x + 1\right)}}} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    6. Simplified0.0

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

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

Reproduce

herbie shell --seed 2019325 +o rules:numerics
(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))))