x - \frac{\left(y \cdot 2.0\right) \cdot z}{\left(z \cdot 2.0\right) \cdot z - y \cdot t}x - \frac{2.0}{\frac{z \cdot 2.0}{y} - \frac{t}{z}}double f(double x, double y, double z, double t) {
double r8604507 = x;
double r8604508 = y;
double r8604509 = 2.0;
double r8604510 = r8604508 * r8604509;
double r8604511 = z;
double r8604512 = r8604510 * r8604511;
double r8604513 = r8604511 * r8604509;
double r8604514 = r8604513 * r8604511;
double r8604515 = t;
double r8604516 = r8604508 * r8604515;
double r8604517 = r8604514 - r8604516;
double r8604518 = r8604512 / r8604517;
double r8604519 = r8604507 - r8604518;
return r8604519;
}
double f(double x, double y, double z, double t) {
double r8604520 = x;
double r8604521 = 2.0;
double r8604522 = z;
double r8604523 = r8604522 * r8604521;
double r8604524 = y;
double r8604525 = r8604523 / r8604524;
double r8604526 = t;
double r8604527 = r8604526 / r8604522;
double r8604528 = r8604525 - r8604527;
double r8604529 = r8604521 / r8604528;
double r8604530 = r8604520 - r8604529;
return r8604530;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.4 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 11.4
Simplified0.1
Final simplification0.1
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.AD.Rank1.Halley:findZero from ad-4.2.4"
:herbie-target
(- x (/ 1 (- (/ z y) (/ (/ t 2.0) z))))
(- x (/ (* (* y 2.0) z) (- (* (* z 2.0) z) (* y t)))))