x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{z}{\frac{z}{\frac{y}{z}} - \frac{t}{2}}double f(double x, double y, double z, double t) {
double r320063 = x;
double r320064 = y;
double r320065 = 2.0;
double r320066 = r320064 * r320065;
double r320067 = z;
double r320068 = r320066 * r320067;
double r320069 = r320067 * r320065;
double r320070 = r320069 * r320067;
double r320071 = t;
double r320072 = r320064 * r320071;
double r320073 = r320070 - r320072;
double r320074 = r320068 / r320073;
double r320075 = r320063 - r320074;
return r320075;
}
double f(double x, double y, double z, double t) {
double r320076 = x;
double r320077 = z;
double r320078 = y;
double r320079 = r320078 / r320077;
double r320080 = r320077 / r320079;
double r320081 = t;
double r320082 = 2.0;
double r320083 = r320081 / r320082;
double r320084 = r320080 - r320083;
double r320085 = r320077 / r320084;
double r320086 = r320076 - r320085;
return r320086;
}




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.3 |
Initial program 11.6
Simplified3.5
rmApplied associate-/l*1.3
Final simplification1.3
herbie shell --seed 2019323
(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)))))