x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y \cdot 2}{1 \cdot \left(2 \cdot z - t \cdot \frac{y}{z}\right)}double f(double x, double y, double z, double t) {
double r444161 = x;
double r444162 = y;
double r444163 = 2.0;
double r444164 = r444162 * r444163;
double r444165 = z;
double r444166 = r444164 * r444165;
double r444167 = r444165 * r444163;
double r444168 = r444167 * r444165;
double r444169 = t;
double r444170 = r444162 * r444169;
double r444171 = r444168 - r444170;
double r444172 = r444166 / r444171;
double r444173 = r444161 - r444172;
return r444173;
}
double f(double x, double y, double z, double t) {
double r444174 = x;
double r444175 = y;
double r444176 = 2.0;
double r444177 = r444175 * r444176;
double r444178 = 1.0;
double r444179 = z;
double r444180 = r444176 * r444179;
double r444181 = t;
double r444182 = r444175 / r444179;
double r444183 = r444181 * r444182;
double r444184 = r444180 - r444183;
double r444185 = r444178 * r444184;
double r444186 = r444177 / r444185;
double r444187 = r444174 - r444186;
return r444187;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.9 |
|---|---|
| Target | 0.1 |
| Herbie | 2.5 |
Initial program 11.9
rmApplied associate-/l*6.8
rmApplied *-un-lft-identity6.8
Applied *-un-lft-identity6.8
Applied times-frac6.8
Simplified6.8
Simplified2.9
rmApplied *-un-lft-identity2.9
Applied times-frac2.5
Simplified2.5
Final simplification2.5
herbie shell --seed 2020083 +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)))))