x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}\mathsf{fma}\left(\frac{1}{\mathsf{fma}\left(\frac{z}{y}, 2, -\frac{t}{z}\right)}, -2, x\right)double f(double x, double y, double z, double t) {
double r342164 = x;
double r342165 = y;
double r342166 = 2.0;
double r342167 = r342165 * r342166;
double r342168 = z;
double r342169 = r342167 * r342168;
double r342170 = r342168 * r342166;
double r342171 = r342170 * r342168;
double r342172 = t;
double r342173 = r342165 * r342172;
double r342174 = r342171 - r342173;
double r342175 = r342169 / r342174;
double r342176 = r342164 - r342175;
return r342176;
}
double f(double x, double y, double z, double t) {
double r342177 = 1.0;
double r342178 = z;
double r342179 = y;
double r342180 = r342178 / r342179;
double r342181 = 2.0;
double r342182 = t;
double r342183 = r342182 / r342178;
double r342184 = -r342183;
double r342185 = fma(r342180, r342181, r342184);
double r342186 = r342177 / r342185;
double r342187 = -r342181;
double r342188 = x;
double r342189 = fma(r342186, r342187, r342188);
return r342189;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 11.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 11.6
Simplified2.2
rmApplied clear-num2.2
Simplified2.2
Taylor expanded around 0 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.AD.Rank1.Halley:findZero from ad-4.2.4"
:herbie-target
(- x (/ 1.0 (- (/ z y) (/ (/ t 2.0) z))))
(- x (/ (* (* y 2.0) z) (- (* (* z 2.0) z) (* y t)))))