x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{1}{\frac{z}{y} - 0.5 \cdot \frac{t}{z}}double f(double x, double y, double z, double t) {
double r373685 = x;
double r373686 = y;
double r373687 = 2.0;
double r373688 = r373686 * r373687;
double r373689 = z;
double r373690 = r373688 * r373689;
double r373691 = r373689 * r373687;
double r373692 = r373691 * r373689;
double r373693 = t;
double r373694 = r373686 * r373693;
double r373695 = r373692 - r373694;
double r373696 = r373690 / r373695;
double r373697 = r373685 - r373696;
return r373697;
}
double f(double x, double y, double z, double t) {
double r373698 = x;
double r373699 = 1.0;
double r373700 = z;
double r373701 = y;
double r373702 = r373700 / r373701;
double r373703 = 0.5;
double r373704 = t;
double r373705 = r373704 / r373700;
double r373706 = r373703 * r373705;
double r373707 = r373702 - r373706;
double r373708 = r373699 / r373707;
double r373709 = r373698 - r373708;
return r373709;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 11.3
Simplified2.5
rmApplied associate-/l*0.9
rmApplied clear-num0.9
Simplified0.9
Taylor expanded around 0 0.1
Final simplification0.1
herbie shell --seed 2019209
(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)))))