x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y}{\frac{2 \cdot z - t \cdot \frac{y}{z}}{2}}double f(double x, double y, double z, double t) {
double r452571 = x;
double r452572 = y;
double r452573 = 2.0;
double r452574 = r452572 * r452573;
double r452575 = z;
double r452576 = r452574 * r452575;
double r452577 = r452575 * r452573;
double r452578 = r452577 * r452575;
double r452579 = t;
double r452580 = r452572 * r452579;
double r452581 = r452578 - r452580;
double r452582 = r452576 / r452581;
double r452583 = r452571 - r452582;
return r452583;
}
double f(double x, double y, double z, double t) {
double r452584 = x;
double r452585 = y;
double r452586 = 2.0;
double r452587 = z;
double r452588 = r452586 * r452587;
double r452589 = t;
double r452590 = r452585 / r452587;
double r452591 = r452589 * r452590;
double r452592 = r452588 - r452591;
double r452593 = r452592 / r452586;
double r452594 = r452585 / r452593;
double r452595 = r452584 - r452594;
return r452595;
}




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.2 |
Initial program 11.6
rmApplied associate-/l*6.4
rmApplied associate-/l*6.4
Simplified2.7
rmApplied *-un-lft-identity2.7
Applied times-frac2.2
Simplified2.2
Final simplification2.2
herbie shell --seed 2020100
(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)))))