x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{z}{z \cdot \frac{1}{\frac{y}{z}} - \frac{t}{2}}double f(double x, double y, double z, double t) {
double r574701 = x;
double r574702 = y;
double r574703 = 2.0;
double r574704 = r574702 * r574703;
double r574705 = z;
double r574706 = r574704 * r574705;
double r574707 = r574705 * r574703;
double r574708 = r574707 * r574705;
double r574709 = t;
double r574710 = r574702 * r574709;
double r574711 = r574708 - r574710;
double r574712 = r574706 / r574711;
double r574713 = r574701 - r574712;
return r574713;
}
double f(double x, double y, double z, double t) {
double r574714 = x;
double r574715 = z;
double r574716 = 1.0;
double r574717 = y;
double r574718 = r574717 / r574715;
double r574719 = r574716 / r574718;
double r574720 = r574715 * r574719;
double r574721 = t;
double r574722 = 2.0;
double r574723 = r574721 / r574722;
double r574724 = r574720 - r574723;
double r574725 = r574715 / r574724;
double r574726 = r574714 - r574725;
return r574726;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.6 |
|---|---|
| Target | 0.1 |
| Herbie | 1.3 |
Initial program 11.6
Simplified3.5
rmApplied associate-/l*1.3
rmApplied div-inv1.3
Final simplification1.3
herbie shell --seed 2020046 +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)))))