\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{2}{x \cdot \left(x \cdot x - 1\right)}double f(double x) {
double r117314 = 1.0;
double r117315 = x;
double r117316 = r117315 + r117314;
double r117317 = r117314 / r117316;
double r117318 = 2.0;
double r117319 = r117318 / r117315;
double r117320 = r117317 - r117319;
double r117321 = r117315 - r117314;
double r117322 = r117314 / r117321;
double r117323 = r117320 + r117322;
return r117323;
}
double f(double x) {
double r117324 = 2.0;
double r117325 = x;
double r117326 = r117325 * r117325;
double r117327 = 1.0;
double r117328 = r117326 - r117327;
double r117329 = r117325 * r117328;
double r117330 = r117324 / r117329;
return r117330;
}




Bits error versus x
Results
| Original | 9.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 9.6
Simplified9.6
rmApplied frac-sub25.4
Applied frac-add24.9
Simplified24.9
Simplified24.9
Taylor expanded around 0 0.3
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019195 +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))))