Average Error: 10.3 → 0.2
Time: 6.1s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -122.45163267022434:\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x}}{x \cdot x}\right)\right)\\ \mathbf{elif}\;x \le 131.817678773259985:\\ \;\;\;\;\left(\frac{1}{x + 1} - \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}}, \frac{2}{{x}^{3}}\right)\right)\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -122.45163267022434:\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x}}{x \cdot x}\right)\right)\\

\mathbf{elif}\;x \le 131.817678773259985:\\
\;\;\;\;\left(\frac{1}{x + 1} - \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}}, \frac{2}{{x}^{3}}\right)\right)\\

\end{array}
double f(double x) {
        double r120768 = 1.0;
        double r120769 = x;
        double r120770 = r120769 + r120768;
        double r120771 = r120768 / r120770;
        double r120772 = 2.0;
        double r120773 = r120772 / r120769;
        double r120774 = r120771 - r120773;
        double r120775 = r120769 - r120768;
        double r120776 = r120768 / r120775;
        double r120777 = r120774 + r120776;
        return r120777;
}

double f(double x) {
        double r120778 = x;
        double r120779 = -122.45163267022434;
        bool r120780 = r120778 <= r120779;
        double r120781 = 2.0;
        double r120782 = 1.0;
        double r120783 = 7.0;
        double r120784 = pow(r120778, r120783);
        double r120785 = r120782 / r120784;
        double r120786 = 5.0;
        double r120787 = pow(r120778, r120786);
        double r120788 = r120782 / r120787;
        double r120789 = r120781 / r120778;
        double r120790 = r120778 * r120778;
        double r120791 = r120789 / r120790;
        double r120792 = fma(r120781, r120788, r120791);
        double r120793 = fma(r120781, r120785, r120792);
        double r120794 = 131.81767877325998;
        bool r120795 = r120778 <= r120794;
        double r120796 = 1.0;
        double r120797 = r120778 + r120796;
        double r120798 = r120796 / r120797;
        double r120799 = r120798 - r120789;
        double r120800 = r120778 - r120796;
        double r120801 = r120796 / r120800;
        double r120802 = r120799 + r120801;
        double r120803 = 3.0;
        double r120804 = pow(r120778, r120803);
        double r120805 = r120781 / r120804;
        double r120806 = fma(r120781, r120788, r120805);
        double r120807 = fma(r120781, r120785, r120806);
        double r120808 = r120795 ? r120802 : r120807;
        double r120809 = r120780 ? r120793 : r120808;
        return r120809;
}

Error

Bits error versus x

Target

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

Derivation

  1. Split input into 3 regimes
  2. if x < -122.45163267022434

    1. Initial program 20.5

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Taylor expanded around inf 0.7

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{2}{{x}^{3}}\right)\right)}\]
    4. Using strategy rm
    5. Applied cube-mult0.7

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

      \[\leadsto \mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \color{blue}{\frac{\frac{2}{x}}{x \cdot x}}\right)\right)\]

    if -122.45163267022434 < x < 131.81767877325998

    1. Initial program 0.1

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]

    if 131.81767877325998 < x

    1. Initial program 20.4

      \[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
    2. Taylor expanded around inf 0.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -122.45163267022434:\\ \;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x}}{x \cdot x}\right)\right)\\ \mathbf{elif}\;x \le 131.817678773259985:\\ \;\;\;\;\left(\frac{1}{x + 1} - \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}}, \frac{2}{{x}^{3}}\right)\right)\\ \end{array}\]

Reproduce

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