Average Error: 9.9 → 0.3
Time: 45.8s
Precision: 64
\[\left(\frac{1.0}{x + 1.0} - \frac{2.0}{x}\right) + \frac{1.0}{x - 1.0}\]
\[\frac{2.0}{\left(\left(x + 1.0\right) \cdot x\right) \cdot \left(x - 1.0\right)}\]
\left(\frac{1.0}{x + 1.0} - \frac{2.0}{x}\right) + \frac{1.0}{x - 1.0}
\frac{2.0}{\left(\left(x + 1.0\right) \cdot x\right) \cdot \left(x - 1.0\right)}
double f(double x) {
        double r6351741 = 1.0;
        double r6351742 = x;
        double r6351743 = r6351742 + r6351741;
        double r6351744 = r6351741 / r6351743;
        double r6351745 = 2.0;
        double r6351746 = r6351745 / r6351742;
        double r6351747 = r6351744 - r6351746;
        double r6351748 = r6351742 - r6351741;
        double r6351749 = r6351741 / r6351748;
        double r6351750 = r6351747 + r6351749;
        return r6351750;
}

double f(double x) {
        double r6351751 = 2.0;
        double r6351752 = x;
        double r6351753 = 1.0;
        double r6351754 = r6351752 + r6351753;
        double r6351755 = r6351754 * r6351752;
        double r6351756 = r6351752 - r6351753;
        double r6351757 = r6351755 * r6351756;
        double r6351758 = r6351751 / r6351757;
        return r6351758;
}

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.3
\[\frac{2.0}{x \cdot \left(x \cdot x - 1.0\right)}\]

Derivation

  1. Initial program 9.9

    \[\left(\frac{1.0}{x + 1.0} - \frac{2.0}{x}\right) + \frac{1.0}{x - 1.0}\]
  2. Using strategy rm
  3. Applied frac-sub26.3

    \[\leadsto \color{blue}{\frac{1.0 \cdot x - \left(x + 1.0\right) \cdot 2.0}{\left(x + 1.0\right) \cdot x}} + \frac{1.0}{x - 1.0}\]
  4. Applied frac-add25.7

    \[\leadsto \color{blue}{\frac{\left(1.0 \cdot x - \left(x + 1.0\right) \cdot 2.0\right) \cdot \left(x - 1.0\right) + \left(\left(x + 1.0\right) \cdot x\right) \cdot 1.0}{\left(\left(x + 1.0\right) \cdot x\right) \cdot \left(x - 1.0\right)}}\]
  5. Taylor expanded around 0 0.3

    \[\leadsto \frac{\color{blue}{2.0}}{\left(\left(x + 1.0\right) \cdot x\right) \cdot \left(x - 1.0\right)}\]
  6. Final simplification0.3

    \[\leadsto \frac{2.0}{\left(\left(x + 1.0\right) \cdot x\right) \cdot \left(x - 1.0\right)}\]

Reproduce

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

  :herbie-target
  (/ 2.0 (* x (- (* x x) 1.0)))

  (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))))