x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \left(y \cdot 2\right) \cdot \frac{1}{2 \cdot z - \frac{t \cdot y}{z}}double f(double x, double y, double z, double t) {
double r495732 = x;
double r495733 = y;
double r495734 = 2.0;
double r495735 = r495733 * r495734;
double r495736 = z;
double r495737 = r495735 * r495736;
double r495738 = r495736 * r495734;
double r495739 = r495738 * r495736;
double r495740 = t;
double r495741 = r495733 * r495740;
double r495742 = r495739 - r495741;
double r495743 = r495737 / r495742;
double r495744 = r495732 - r495743;
return r495744;
}
double f(double x, double y, double z, double t) {
double r495745 = x;
double r495746 = y;
double r495747 = 2.0;
double r495748 = r495746 * r495747;
double r495749 = 1.0;
double r495750 = z;
double r495751 = r495747 * r495750;
double r495752 = t;
double r495753 = r495752 * r495746;
double r495754 = r495753 / r495750;
double r495755 = r495751 - r495754;
double r495756 = r495749 / r495755;
double r495757 = r495748 * r495756;
double r495758 = r495745 - r495757;
return r495758;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.6 |
|---|---|
| Target | 0.1 |
| Herbie | 2.9 |
Initial program 11.6
rmApplied associate-/l*7.0
Taylor expanded around 0 2.9
rmApplied div-inv2.9
Final simplification2.9
herbie shell --seed 2020089 +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)))))