Average Error: 9.9 → 0.1
Time: 22.5s
Precision: 64
\[\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -111.6420365632021:\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{\frac{2}{x}}{x}}{x} + \frac{2}{{x}^{5}}\right)\\ \mathbf{elif}\;x \le 108.84391371430509:\\ \;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right) + \frac{2}{{x}^{7}}\\ \end{array}\]
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \le -111.6420365632021:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{\frac{2}{x}}{x}}{x} + \frac{2}{{x}^{5}}\right)\\

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

\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right) + \frac{2}{{x}^{7}}\\

\end{array}
double f(double x) {
        double r1587261 = 1.0;
        double r1587262 = x;
        double r1587263 = r1587262 + r1587261;
        double r1587264 = r1587261 / r1587263;
        double r1587265 = 2.0;
        double r1587266 = r1587265 / r1587262;
        double r1587267 = r1587264 - r1587266;
        double r1587268 = r1587262 - r1587261;
        double r1587269 = r1587261 / r1587268;
        double r1587270 = r1587267 + r1587269;
        return r1587270;
}

double f(double x) {
        double r1587271 = x;
        double r1587272 = -111.6420365632021;
        bool r1587273 = r1587271 <= r1587272;
        double r1587274 = 2.0;
        double r1587275 = 7.0;
        double r1587276 = pow(r1587271, r1587275);
        double r1587277 = r1587274 / r1587276;
        double r1587278 = r1587274 / r1587271;
        double r1587279 = r1587278 / r1587271;
        double r1587280 = r1587279 / r1587271;
        double r1587281 = 5.0;
        double r1587282 = pow(r1587271, r1587281);
        double r1587283 = r1587274 / r1587282;
        double r1587284 = r1587280 + r1587283;
        double r1587285 = r1587277 + r1587284;
        double r1587286 = 108.84391371430509;
        bool r1587287 = r1587271 <= r1587286;
        double r1587288 = 1.0;
        double r1587289 = r1587288 + r1587271;
        double r1587290 = r1587288 / r1587289;
        double r1587291 = r1587290 - r1587278;
        double r1587292 = r1587271 - r1587288;
        double r1587293 = r1587288 / r1587292;
        double r1587294 = r1587291 + r1587293;
        double r1587295 = r1587271 * r1587271;
        double r1587296 = r1587278 / r1587295;
        double r1587297 = r1587296 + r1587283;
        double r1587298 = r1587297 + r1587277;
        double r1587299 = r1587287 ? r1587294 : r1587298;
        double r1587300 = r1587273 ? r1587285 : r1587299;
        return r1587300;
}

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 3 regimes
  2. if x < -111.6420365632021

    1. Initial program 19.6

      \[\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}^{3}} + 2 \cdot \frac{1}{{x}^{5}}\right)}\]
    3. Simplified0.6

      \[\leadsto \color{blue}{\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{x \cdot \left(x \cdot x\right)}\right)}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity0.6

      \[\leadsto \frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\color{blue}{1 \cdot 2}}{x \cdot \left(x \cdot x\right)}\right)\]
    6. Applied times-frac0.1

      \[\leadsto \frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \color{blue}{\frac{1}{x} \cdot \frac{2}{x \cdot x}}\right)\]
    7. Using strategy rm
    8. Applied associate-*r/0.1

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

      \[\leadsto \frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\color{blue}{\frac{2}{x}}}{x \cdot x}\right)\]
    10. Using strategy rm
    11. Applied associate-/r*0.1

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

    if -111.6420365632021 < x < 108.84391371430509

    1. Initial program 0.0

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

    if 108.84391371430509 < x

    1. Initial program 19.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}^{3}} + 2 \cdot \frac{1}{{x}^{5}}\right)}\]
    3. Simplified0.6

      \[\leadsto \color{blue}{\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{x \cdot \left(x \cdot x\right)}\right)}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity0.6

      \[\leadsto \frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\color{blue}{1 \cdot 2}}{x \cdot \left(x \cdot x\right)}\right)\]
    6. Applied times-frac0.1

      \[\leadsto \frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \color{blue}{\frac{1}{x} \cdot \frac{2}{x \cdot x}}\right)\]
    7. Using strategy rm
    8. Applied associate-*r/0.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -111.6420365632021:\\ \;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{\frac{\frac{2}{x}}{x}}{x} + \frac{2}{{x}^{5}}\right)\\ \mathbf{elif}\;x \le 108.84391371430509:\\ \;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\frac{2}{x}}{x \cdot x} + \frac{2}{{x}^{5}}\right) + \frac{2}{{x}^{7}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019152 +o rules:numerics
(FPCore (x)
  :name "3frac (problem 3.3.3)"

  :herbie-target
  (/ 2 (* x (- (* x x) 1)))

  (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))