Average Error: 9.6 → 0.2
Time: 7.4s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le -0.022948797585861574 \lor \neg \left(\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le 6.46235 \cdot 10^{-27}\right):\\ \;\;\;\;\left(\sqrt[3]{{\left(\frac{1}{x + 1}\right)}^{3}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le -0.022948797585861574 \lor \neg \left(\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le 6.46235 \cdot 10^{-27}\right):\\
\;\;\;\;\left(\sqrt[3]{{\left(\frac{1}{x + 1}\right)}^{3}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\

\end{array}
double f(double x) {
        double r122290 = 1.0;
        double r122291 = x;
        double r122292 = r122291 + r122290;
        double r122293 = r122290 / r122292;
        double r122294 = 2.0;
        double r122295 = r122294 / r122291;
        double r122296 = r122293 - r122295;
        double r122297 = r122291 - r122290;
        double r122298 = r122290 / r122297;
        double r122299 = r122296 + r122298;
        return r122299;
}

double f(double x) {
        double r122300 = 1.0;
        double r122301 = x;
        double r122302 = r122301 + r122300;
        double r122303 = r122300 / r122302;
        double r122304 = 2.0;
        double r122305 = r122304 / r122301;
        double r122306 = r122303 - r122305;
        double r122307 = r122301 - r122300;
        double r122308 = r122300 / r122307;
        double r122309 = r122306 + r122308;
        double r122310 = -0.022948797585861574;
        bool r122311 = r122309 <= r122310;
        double r122312 = 6.462348535570529e-27;
        bool r122313 = r122309 <= r122312;
        double r122314 = !r122313;
        bool r122315 = r122311 || r122314;
        double r122316 = 3.0;
        double r122317 = pow(r122303, r122316);
        double r122318 = cbrt(r122317);
        double r122319 = r122318 - r122305;
        double r122320 = r122319 + r122308;
        double r122321 = 1.0;
        double r122322 = 7.0;
        double r122323 = pow(r122301, r122322);
        double r122324 = r122321 / r122323;
        double r122325 = 5.0;
        double r122326 = pow(r122301, r122325);
        double r122327 = r122321 / r122326;
        double r122328 = -r122316;
        double r122329 = pow(r122301, r122328);
        double r122330 = r122304 * r122329;
        double r122331 = fma(r122304, r122327, r122330);
        double r122332 = fma(r122304, r122324, r122331);
        double r122333 = r122315 ? r122320 : r122332;
        return r122333;
}

Error

Bits error versus x

Target

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

Derivation

  1. Split input into 2 regimes
  2. if (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) < -0.022948797585861574 or 6.462348535570529e-27 < (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0)))

    1. Initial program 0.4

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

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

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

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

      \[\leadsto \left(\sqrt[3]{\color{blue}{{\left(\frac{1}{x + 1}\right)}^{3}}} - \frac{2}{x}\right) + \frac{1}{x - 1}\]

    if -0.022948797585861574 < (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) < 6.462348535570529e-27

    1. Initial program 19.2

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

      \[\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-cube59.6

      \[\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-undiv59.8

      \[\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. Simplified59.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot \frac{1}{{x}^{3}}\right)\right)}\]
    9. Using strategy rm
    10. Applied pow-flip0.1

      \[\leadsto \mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot \color{blue}{{x}^{\left(-3\right)}}\right)\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le -0.022948797585861574 \lor \neg \left(\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le 6.46235 \cdot 10^{-27}\right):\\ \;\;\;\;\left(\sqrt[3]{{\left(\frac{1}{x + 1}\right)}^{3}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020039 +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))))