x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{1}{\frac{2 \cdot \frac{z}{y} - \frac{t}{z}}{2}}double f(double x, double y, double z, double t) {
double r567381 = x;
double r567382 = y;
double r567383 = 2.0;
double r567384 = r567382 * r567383;
double r567385 = z;
double r567386 = r567384 * r567385;
double r567387 = r567385 * r567383;
double r567388 = r567387 * r567385;
double r567389 = t;
double r567390 = r567382 * r567389;
double r567391 = r567388 - r567390;
double r567392 = r567386 / r567391;
double r567393 = r567381 - r567392;
return r567393;
}
double f(double x, double y, double z, double t) {
double r567394 = x;
double r567395 = 1.0;
double r567396 = 2.0;
double r567397 = z;
double r567398 = y;
double r567399 = r567397 / r567398;
double r567400 = r567396 * r567399;
double r567401 = t;
double r567402 = r567401 / r567397;
double r567403 = r567400 - r567402;
double r567404 = r567403 / r567396;
double r567405 = r567395 / r567404;
double r567406 = r567394 - r567405;
return r567406;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 11.8
rmApplied associate-/l*6.8
rmApplied *-un-lft-identity6.8
Applied *-un-lft-identity6.8
Applied times-frac6.8
Simplified6.8
Simplified2.9
rmApplied clear-num3.0
Simplified2.9
Taylor expanded around 0 0.1
Final simplification0.1
herbie shell --seed 2020036
(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)))))