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 r541097 = x;
double r541098 = y;
double r541099 = 2.0;
double r541100 = r541098 * r541099;
double r541101 = z;
double r541102 = r541100 * r541101;
double r541103 = r541101 * r541099;
double r541104 = r541103 * r541101;
double r541105 = t;
double r541106 = r541098 * r541105;
double r541107 = r541104 - r541106;
double r541108 = r541102 / r541107;
double r541109 = r541097 - r541108;
return r541109;
}
double f(double x, double y, double z, double t) {
double r541110 = x;
double r541111 = y;
double r541112 = 2.0;
double r541113 = z;
double r541114 = r541112 * r541113;
double r541115 = t;
double r541116 = r541115 * r541111;
double r541117 = r541116 / r541113;
double r541118 = r541114 - r541117;
double r541119 = r541118 / r541112;
double r541120 = r541111 / r541119;
double r541121 = r541110 - r541120;
return r541121;
}




Bits error versus x




Bits error versus y




Bits error versus z




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