x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{1}{z - \frac{t}{z} \cdot \frac{y}{2}} \cdot ydouble f(double x, double y, double z, double t) {
double r26906706 = x;
double r26906707 = y;
double r26906708 = 2.0;
double r26906709 = r26906707 * r26906708;
double r26906710 = z;
double r26906711 = r26906709 * r26906710;
double r26906712 = r26906710 * r26906708;
double r26906713 = r26906712 * r26906710;
double r26906714 = t;
double r26906715 = r26906707 * r26906714;
double r26906716 = r26906713 - r26906715;
double r26906717 = r26906711 / r26906716;
double r26906718 = r26906706 - r26906717;
return r26906718;
}
double f(double x, double y, double z, double t) {
double r26906719 = x;
double r26906720 = 1.0;
double r26906721 = z;
double r26906722 = t;
double r26906723 = r26906722 / r26906721;
double r26906724 = y;
double r26906725 = 2.0;
double r26906726 = r26906724 / r26906725;
double r26906727 = r26906723 * r26906726;
double r26906728 = r26906721 - r26906727;
double r26906729 = r26906720 / r26906728;
double r26906730 = r26906729 * r26906724;
double r26906731 = r26906719 - r26906730;
return r26906731;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.5 |
|---|---|
| Target | 0.1 |
| Herbie | 1.1 |
Initial program 11.5
Simplified1.0
rmApplied div-inv1.1
Final simplification1.1
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.AD.Rank1.Halley:findZero from ad-4.2.4"
:herbie-target
(- x (/ 1.0 (- (/ z y) (/ (/ t 2.0) z))))
(- x (/ (* (* y 2.0) z) (- (* (* z 2.0) z) (* y t)))))