x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}\frac{\left(-2\right) \cdot y}{z \cdot 2 - \frac{y}{\frac{z}{t}}} + xdouble f(double x, double y, double z, double t) {
double r261279 = x;
double r261280 = y;
double r261281 = 2.0;
double r261282 = r261280 * r261281;
double r261283 = z;
double r261284 = r261282 * r261283;
double r261285 = r261283 * r261281;
double r261286 = r261285 * r261283;
double r261287 = t;
double r261288 = r261280 * r261287;
double r261289 = r261286 - r261288;
double r261290 = r261284 / r261289;
double r261291 = r261279 - r261290;
return r261291;
}
double f(double x, double y, double z, double t) {
double r261292 = 2.0;
double r261293 = -r261292;
double r261294 = y;
double r261295 = r261293 * r261294;
double r261296 = z;
double r261297 = r261296 * r261292;
double r261298 = t;
double r261299 = r261296 / r261298;
double r261300 = r261294 / r261299;
double r261301 = r261297 - r261300;
double r261302 = r261295 / r261301;
double r261303 = x;
double r261304 = r261302 + r261303;
return r261304;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.9 |
Initial program 11.3
Simplified2.6
rmApplied associate-/l*0.9
rmApplied fma-udef0.9
rmApplied distribute-neg-frac0.9
Applied associate-*l/0.9
Final simplification0.9
herbie shell --seed 2019208 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.AD.Rank1.Halley:findZero from ad-4.2.4"
:precision binary64
:herbie-target
(- x (/ 1 (- (/ z y) (/ (/ t 2) z))))
(- x (/ (* (* y 2) z) (- (* (* z 2) z) (* y t)))))