\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\frac{1}{\left(x + 1\right) \cdot x} \cdot \frac{2}{x - 1}double f(double x) {
double r57213 = 1.0;
double r57214 = x;
double r57215 = r57214 + r57213;
double r57216 = r57213 / r57215;
double r57217 = 2.0;
double r57218 = r57217 / r57214;
double r57219 = r57216 - r57218;
double r57220 = r57214 - r57213;
double r57221 = r57213 / r57220;
double r57222 = r57219 + r57221;
return r57222;
}
double f(double x) {
double r57223 = 1.0;
double r57224 = x;
double r57225 = 1.0;
double r57226 = r57224 + r57225;
double r57227 = r57226 * r57224;
double r57228 = r57223 / r57227;
double r57229 = 2.0;
double r57230 = r57224 - r57225;
double r57231 = r57229 / r57230;
double r57232 = r57228 * r57231;
return r57232;
}




Bits error versus x
Results
| Original | 10.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
Initial program 10.6
rmApplied frac-sub26.2
Applied frac-add25.6
Simplified26.0
Taylor expanded around 0 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.1
Final simplification0.1
herbie shell --seed 2020045 +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))))