x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y \cdot 2}{z \cdot 2 - t \cdot \frac{y}{z}}double f(double x, double y, double z, double t) {
double r537579 = x;
double r537580 = y;
double r537581 = 2.0;
double r537582 = r537580 * r537581;
double r537583 = z;
double r537584 = r537582 * r537583;
double r537585 = r537583 * r537581;
double r537586 = r537585 * r537583;
double r537587 = t;
double r537588 = r537580 * r537587;
double r537589 = r537586 - r537588;
double r537590 = r537584 / r537589;
double r537591 = r537579 - r537590;
return r537591;
}
double f(double x, double y, double z, double t) {
double r537592 = x;
double r537593 = y;
double r537594 = 2.0;
double r537595 = r537593 * r537594;
double r537596 = z;
double r537597 = r537596 * r537594;
double r537598 = t;
double r537599 = r537593 / r537596;
double r537600 = r537598 * r537599;
double r537601 = r537597 - r537600;
double r537602 = r537595 / r537601;
double r537603 = r537592 - r537602;
return r537603;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.4 |
|---|---|
| Target | 0.1 |
| Herbie | 2.4 |
Initial program 11.4
rmApplied associate-/l*6.7
rmApplied div-sub6.7
Simplified2.8
Simplified2.8
rmApplied *-un-lft-identity2.8
Applied times-frac2.4
Simplified2.4
Final simplification2.4
herbie shell --seed 1978988140
(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)))))