x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y \cdot 2}{2 \cdot z - t \cdot \frac{y}{z}}double f(double x, double y, double z, double t) {
double r508689 = x;
double r508690 = y;
double r508691 = 2.0;
double r508692 = r508690 * r508691;
double r508693 = z;
double r508694 = r508692 * r508693;
double r508695 = r508693 * r508691;
double r508696 = r508695 * r508693;
double r508697 = t;
double r508698 = r508690 * r508697;
double r508699 = r508696 - r508698;
double r508700 = r508694 / r508699;
double r508701 = r508689 - r508700;
return r508701;
}
double f(double x, double y, double z, double t) {
double r508702 = x;
double r508703 = y;
double r508704 = 2.0;
double r508705 = r508703 * r508704;
double r508706 = z;
double r508707 = r508704 * r508706;
double r508708 = t;
double r508709 = r508703 / r508706;
double r508710 = r508708 * r508709;
double r508711 = r508707 - r508710;
double r508712 = r508705 / r508711;
double r508713 = r508702 - r508712;
return r508713;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.8 |
|---|---|
| Target | 0.1 |
| Herbie | 2.6 |
Initial program 11.8
rmApplied associate-/l*6.7
Taylor expanded around 0 2.8
rmApplied *-un-lft-identity2.8
Applied times-frac2.6
Simplified2.6
Final simplification2.6
herbie shell --seed 2020081
(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)))))