x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y}{\mathsf{fma}\left(\frac{t}{z}, -\frac{y}{2}, z\right)}double f(double x, double y, double z, double t) {
double r280440 = x;
double r280441 = y;
double r280442 = 2.0;
double r280443 = r280441 * r280442;
double r280444 = z;
double r280445 = r280443 * r280444;
double r280446 = r280444 * r280442;
double r280447 = r280446 * r280444;
double r280448 = t;
double r280449 = r280441 * r280448;
double r280450 = r280447 - r280449;
double r280451 = r280445 / r280450;
double r280452 = r280440 - r280451;
return r280452;
}
double f(double x, double y, double z, double t) {
double r280453 = x;
double r280454 = y;
double r280455 = t;
double r280456 = z;
double r280457 = r280455 / r280456;
double r280458 = 2.0;
double r280459 = r280454 / r280458;
double r280460 = -r280459;
double r280461 = fma(r280457, r280460, r280456);
double r280462 = r280454 / r280461;
double r280463 = r280453 - r280462;
return r280463;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 11.7 |
|---|---|
| Target | 0.1 |
| Herbie | 1.0 |
Initial program 11.7
Simplified1.0
Final simplification1.0
herbie shell --seed 2019304 +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)))))