Average Error: 9.9 → 0.1
Time: 17.8s
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 r112027 = 1.0;
        double r112028 = x;
        double r112029 = r112028 + r112027;
        double r112030 = r112027 / r112029;
        double r112031 = 2.0;
        double r112032 = r112031 / r112028;
        double r112033 = r112030 - r112032;
        double r112034 = r112028 - r112027;
        double r112035 = r112027 / r112034;
        double r112036 = r112033 + r112035;
        return r112036;
}

double f(double x) {
        double r112037 = x;
        double r112038 = -97.23298484104902;
        bool r112039 = r112037 <= r112038;
        double r112040 = 104.14959850437234;
        bool r112041 = r112037 <= r112040;
        double r112042 = !r112041;
        bool r112043 = r112039 || r112042;
        double r112044 = 2.0;
        double r112045 = 5.0;
        double r112046 = pow(r112037, r112045);
        double r112047 = r112044 / r112046;
        double r112048 = 7.0;
        double r112049 = pow(r112037, r112048);
        double r112050 = r112044 / r112049;
        double r112051 = r112047 + r112050;
        double r112052 = r112044 / r112037;
        double r112053 = r112037 * r112037;
        double r112054 = r112052 / r112053;
        double r112055 = r112051 + r112054;
        double r112056 = 1.0;
        double r112057 = r112037 + r112056;
        double r112058 = r112056 / r112057;
        double r112059 = 3.0;
        double r112060 = pow(r112058, r112059);
        double r112061 = cbrt(r112060);
        double r112062 = r112061 - r112052;
        double r112063 = r112037 - r112056;
        double r112064 = r112056 / r112063;
        double r112065 = r112062 + r112064;
        double r112066 = r112043 ? r112055 : r112065;
        return r112066;
}

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))))