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{y}{2}, \frac{-t}{z}, z\right)}double f(double x, double y, double z, double t) {
double r576398 = x;
double r576399 = y;
double r576400 = 2.0;
double r576401 = r576399 * r576400;
double r576402 = z;
double r576403 = r576401 * r576402;
double r576404 = r576402 * r576400;
double r576405 = r576404 * r576402;
double r576406 = t;
double r576407 = r576399 * r576406;
double r576408 = r576405 - r576407;
double r576409 = r576403 / r576408;
double r576410 = r576398 - r576409;
return r576410;
}
double f(double x, double y, double z, double t) {
double r576411 = x;
double r576412 = y;
double r576413 = 2.0;
double r576414 = r576412 / r576413;
double r576415 = t;
double r576416 = -r576415;
double r576417 = z;
double r576418 = r576416 / r576417;
double r576419 = fma(r576414, r576418, r576417);
double r576420 = r576412 / r576419;
double r576421 = r576411 - r576420;
return r576421;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 11.4 |
|---|---|
| Target | 0.1 |
| Herbie | 0.9 |
Initial program 11.4
Simplified0.9
rmApplied *-un-lft-identity0.9
Final simplification0.9
herbie shell --seed 2020047 +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)))))