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 r324999 = x;
double r325000 = y;
double r325001 = 2.0;
double r325002 = r325000 * r325001;
double r325003 = z;
double r325004 = r325002 * r325003;
double r325005 = r325003 * r325001;
double r325006 = r325005 * r325003;
double r325007 = t;
double r325008 = r325000 * r325007;
double r325009 = r325006 - r325008;
double r325010 = r325004 / r325009;
double r325011 = r324999 - r325010;
return r325011;
}
double f(double x, double y, double z, double t) {
double r325012 = x;
double r325013 = y;
double r325014 = t;
double r325015 = z;
double r325016 = r325014 / r325015;
double r325017 = 2.0;
double r325018 = r325013 / r325017;
double r325019 = -r325018;
double r325020 = fma(r325016, r325019, r325015);
double r325021 = r325013 / r325020;
double r325022 = r325012 - r325021;
return r325022;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 11.8 |
|---|---|
| Target | 0.1 |
| Herbie | 1.1 |
Initial program 11.8
Simplified1.1
Final simplification1.1
herbie shell --seed 2019303 +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)))))