x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - y \cdot \frac{1}{\frac{t}{z} \cdot \left(-\frac{y}{2}\right) + z}double f(double x, double y, double z, double t) {
double r357529 = x;
double r357530 = y;
double r357531 = 2.0;
double r357532 = r357530 * r357531;
double r357533 = z;
double r357534 = r357532 * r357533;
double r357535 = r357533 * r357531;
double r357536 = r357535 * r357533;
double r357537 = t;
double r357538 = r357530 * r357537;
double r357539 = r357536 - r357538;
double r357540 = r357534 / r357539;
double r357541 = r357529 - r357540;
return r357541;
}
double f(double x, double y, double z, double t) {
double r357542 = x;
double r357543 = y;
double r357544 = 1.0;
double r357545 = t;
double r357546 = z;
double r357547 = r357545 / r357546;
double r357548 = 2.0;
double r357549 = r357543 / r357548;
double r357550 = -r357549;
double r357551 = r357547 * r357550;
double r357552 = r357551 + r357546;
double r357553 = r357544 / r357552;
double r357554 = r357543 * r357553;
double r357555 = r357542 - r357554;
return r357555;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.6 |
|---|---|
| Target | 0.1 |
| Herbie | 1.2 |
Initial program 11.6
Simplified1.1
rmApplied div-inv1.2
rmApplied fma-udef1.2
Final simplification1.2
herbie shell --seed 2019323 +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)))))