Average Error: 9.4 → 0.0
Time: 4.4s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -111.0202622422814613400987582281231880188 \lor \neg \left(x \le 109.8975046823589565292422776110470294952\right):\\ \;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x + 1} - \left(\frac{2}{x} - \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 -111.0202622422814613400987582281231880188 \lor \neg \left(x \le 109.8975046823589565292422776110470294952\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{x + 1} - \left(\frac{2}{x} - \frac{1}{x - 1}\right)\\

\end{array}
double f(double x) {
        double r177955 = 1.0;
        double r177956 = x;
        double r177957 = r177956 + r177955;
        double r177958 = r177955 / r177957;
        double r177959 = 2.0;
        double r177960 = r177959 / r177956;
        double r177961 = r177958 - r177960;
        double r177962 = r177956 - r177955;
        double r177963 = r177955 / r177962;
        double r177964 = r177961 + r177963;
        return r177964;
}

double f(double x) {
        double r177965 = x;
        double r177966 = -111.02026224228146;
        bool r177967 = r177965 <= r177966;
        double r177968 = 109.89750468235896;
        bool r177969 = r177965 <= r177968;
        double r177970 = !r177969;
        bool r177971 = r177967 || r177970;
        double r177972 = 2.0;
        double r177973 = 1.0;
        double r177974 = 7.0;
        double r177975 = pow(r177965, r177974);
        double r177976 = r177973 / r177975;
        double r177977 = 5.0;
        double r177978 = pow(r177965, r177977);
        double r177979 = r177973 / r177978;
        double r177980 = 3.0;
        double r177981 = -r177980;
        double r177982 = pow(r177965, r177981);
        double r177983 = r177979 + r177982;
        double r177984 = r177976 + r177983;
        double r177985 = r177972 * r177984;
        double r177986 = 1.0;
        double r177987 = r177965 + r177986;
        double r177988 = r177986 / r177987;
        double r177989 = r177972 / r177965;
        double r177990 = r177965 - r177986;
        double r177991 = r177986 / r177990;
        double r177992 = r177989 - r177991;
        double r177993 = r177988 - r177992;
        double r177994 = r177971 ? r177985 : r177993;
        return r177994;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -111.02026224228146 or 109.89750468235896 < x

    1. Initial program 18.8

      \[\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}{2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + \frac{1}{{x}^{3}}\right)\right)}\]
    4. Using strategy rm
    5. Applied pow-flip0.0

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

    if -111.02026224228146 < x < 109.89750468235896

    1. Initial program 0.0

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

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

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

Reproduce

herbie shell --seed 2019353 
(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))))