Average Error: 9.6 → 0.0
Time: 7.0s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -86.60693860825423939786560367792844772339 \lor \neg \left(x \le 109.7413808046783572081039892509579658508\right):\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{\sqrt{1}}{\sqrt[3]{{x}^{3} + {1}^{3}} \cdot \sqrt[3]{{x}^{3} + {1}^{3}}} \cdot \frac{\sqrt{1}}{\sqrt[3]{{x}^{3} + {1}^{3}}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{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 -86.60693860825423939786560367792844772339 \lor \neg \left(x \le 109.7413808046783572081039892509579658508\right):\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\

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

\end{array}
double f(double x) {
        double r126138 = 1.0;
        double r126139 = x;
        double r126140 = r126139 + r126138;
        double r126141 = r126138 / r126140;
        double r126142 = 2.0;
        double r126143 = r126142 / r126139;
        double r126144 = r126141 - r126143;
        double r126145 = r126139 - r126138;
        double r126146 = r126138 / r126145;
        double r126147 = r126144 + r126146;
        return r126147;
}

double f(double x) {
        double r126148 = x;
        double r126149 = -86.60693860825424;
        bool r126150 = r126148 <= r126149;
        double r126151 = 109.74138080467836;
        bool r126152 = r126148 <= r126151;
        double r126153 = !r126152;
        bool r126154 = r126150 || r126153;
        double r126155 = 2.0;
        double r126156 = 1.0;
        double r126157 = 7.0;
        double r126158 = pow(r126148, r126157);
        double r126159 = r126156 / r126158;
        double r126160 = 5.0;
        double r126161 = pow(r126148, r126160);
        double r126162 = r126156 / r126161;
        double r126163 = 3.0;
        double r126164 = -r126163;
        double r126165 = pow(r126148, r126164);
        double r126166 = r126155 * r126165;
        double r126167 = fma(r126155, r126162, r126166);
        double r126168 = fma(r126155, r126159, r126167);
        double r126169 = 1.0;
        double r126170 = sqrt(r126169);
        double r126171 = pow(r126148, r126163);
        double r126172 = pow(r126169, r126163);
        double r126173 = r126171 + r126172;
        double r126174 = cbrt(r126173);
        double r126175 = r126174 * r126174;
        double r126176 = r126170 / r126175;
        double r126177 = r126170 / r126174;
        double r126178 = r126176 * r126177;
        double r126179 = r126148 * r126148;
        double r126180 = r126169 * r126169;
        double r126181 = r126148 * r126169;
        double r126182 = r126180 - r126181;
        double r126183 = r126179 + r126182;
        double r126184 = r126156 / r126148;
        double r126185 = r126184 * r126155;
        double r126186 = -r126185;
        double r126187 = fma(r126178, r126183, r126186);
        double r126188 = r126155 / r126148;
        double r126189 = -r126156;
        double r126190 = r126189 + r126156;
        double r126191 = r126148 - r126169;
        double r126192 = r126169 / r126191;
        double r126193 = fma(r126188, r126190, r126192);
        double r126194 = r126187 + r126193;
        double r126195 = r126154 ? r126168 : r126194;
        return r126195;
}

Error

Bits error versus x

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -86.60693860825424 or 109.74138080467836 < x

    1. Initial program 19.2

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

      \[\leadsto \left(\frac{1}{x + 1} - \color{blue}{2 \cdot \frac{1}{x}}\right) + \frac{1}{x - 1}\]
    4. Applied flip3-+61.8

      \[\leadsto \left(\frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - 2 \cdot \frac{1}{x}\right) + \frac{1}{x - 1}\]
    5. Applied associate-/r/61.9

      \[\leadsto \left(\color{blue}{\frac{1}{{x}^{3} + {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right)} - 2 \cdot \frac{1}{x}\right) + \frac{1}{x - 1}\]
    6. Applied prod-diff61.9

      \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \mathsf{fma}\left(-\frac{1}{x}, 2, \frac{1}{x} \cdot 2\right)\right)} + \frac{1}{x - 1}\]
    7. Applied associate-+l+61.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \left(\mathsf{fma}\left(-\frac{1}{x}, 2, \frac{1}{x} \cdot 2\right) + \frac{1}{x - 1}\right)}\]
    8. Simplified61.9

      \[\leadsto \mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \color{blue}{\mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)}\]
    9. 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)}\]
    10. 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)}\]
    11. Using strategy rm
    12. Applied pow-flip0.0

      \[\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)\]

    if -86.60693860825424 < x < 109.74138080467836

    1. Initial program 0.0

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

      \[\leadsto \left(\frac{1}{x + 1} - \color{blue}{2 \cdot \frac{1}{x}}\right) + \frac{1}{x - 1}\]
    4. Applied flip3-+0.0

      \[\leadsto \left(\frac{1}{\color{blue}{\frac{{x}^{3} + {1}^{3}}{x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)}}} - 2 \cdot \frac{1}{x}\right) + \frac{1}{x - 1}\]
    5. Applied associate-/r/0.0

      \[\leadsto \left(\color{blue}{\frac{1}{{x}^{3} + {1}^{3}} \cdot \left(x \cdot x + \left(1 \cdot 1 - x \cdot 1\right)\right)} - 2 \cdot \frac{1}{x}\right) + \frac{1}{x - 1}\]
    6. Applied prod-diff0.0

      \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \mathsf{fma}\left(-\frac{1}{x}, 2, \frac{1}{x} \cdot 2\right)\right)} + \frac{1}{x - 1}\]
    7. Applied associate-+l+0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \left(\mathsf{fma}\left(-\frac{1}{x}, 2, \frac{1}{x} \cdot 2\right) + \frac{1}{x - 1}\right)}\]
    8. Simplified0.0

      \[\leadsto \mathsf{fma}\left(\frac{1}{{x}^{3} + {1}^{3}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \color{blue}{\mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)}\]
    9. Using strategy rm
    10. Applied add-cube-cbrt0.1

      \[\leadsto \mathsf{fma}\left(\frac{1}{\color{blue}{\left(\sqrt[3]{{x}^{3} + {1}^{3}} \cdot \sqrt[3]{{x}^{3} + {1}^{3}}\right) \cdot \sqrt[3]{{x}^{3} + {1}^{3}}}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\]
    11. Applied add-sqr-sqrt0.1

      \[\leadsto \mathsf{fma}\left(\frac{\color{blue}{\sqrt{1} \cdot \sqrt{1}}}{\left(\sqrt[3]{{x}^{3} + {1}^{3}} \cdot \sqrt[3]{{x}^{3} + {1}^{3}}\right) \cdot \sqrt[3]{{x}^{3} + {1}^{3}}}, x \cdot x + \left(1 \cdot 1 - x \cdot 1\right), -\frac{1}{x} \cdot 2\right) + \mathsf{fma}\left(\frac{2}{x}, \left(-1\right) + 1, \frac{1}{x - 1}\right)\]
    12. Applied times-frac0.1

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

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

Reproduce

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