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 r315982 = x;
double r315983 = y;
double r315984 = 2.0;
double r315985 = r315983 * r315984;
double r315986 = z;
double r315987 = r315985 * r315986;
double r315988 = r315986 * r315984;
double r315989 = r315988 * r315986;
double r315990 = t;
double r315991 = r315983 * r315990;
double r315992 = r315989 - r315991;
double r315993 = r315987 / r315992;
double r315994 = r315982 - r315993;
return r315994;
}
double f(double x, double y, double z, double t) {
double r315995 = x;
double r315996 = y;
double r315997 = t;
double r315998 = z;
double r315999 = r315997 / r315998;
double r316000 = 2.0;
double r316001 = r315996 / r316000;
double r316002 = -r316001;
double r316003 = fma(r315999, r316002, r315998);
double r316004 = r315996 / r316003;
double r316005 = r315995 - r316004;
return r316005;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 12.1 |
|---|---|
| Target | 0.1 |
| Herbie | 1.2 |
Initial program 12.1
Simplified1.2
rmApplied *-un-lft-identity1.2
Final simplification1.2
herbie shell --seed 2019322 +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)))))