x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y}{\frac{2 \cdot z - \frac{t \cdot y}{z}}{2}}double f(double x, double y, double z, double t) {
double r440388 = x;
double r440389 = y;
double r440390 = 2.0;
double r440391 = r440389 * r440390;
double r440392 = z;
double r440393 = r440391 * r440392;
double r440394 = r440392 * r440390;
double r440395 = r440394 * r440392;
double r440396 = t;
double r440397 = r440389 * r440396;
double r440398 = r440395 - r440397;
double r440399 = r440393 / r440398;
double r440400 = r440388 - r440399;
return r440400;
}
double f(double x, double y, double z, double t) {
double r440401 = x;
double r440402 = y;
double r440403 = 2.0;
double r440404 = z;
double r440405 = r440403 * r440404;
double r440406 = t;
double r440407 = r440406 * r440402;
double r440408 = r440407 / r440404;
double r440409 = r440405 - r440408;
double r440410 = r440409 / r440403;
double r440411 = r440402 / r440410;
double r440412 = r440401 - r440411;
return r440412;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.2 |
|---|---|
| Target | 0.1 |
| Herbie | 2.8 |
Initial program 11.2
rmApplied associate-/l*6.6
rmApplied associate-/l*6.6
Simplified2.8
Final simplification2.8
herbie shell --seed 2019294
(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)))))