x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y}{\frac{2 \cdot z - \frac{t}{z} \cdot y}{2}}double f(double x, double y, double z, double t) {
double r451209 = x;
double r451210 = y;
double r451211 = 2.0;
double r451212 = r451210 * r451211;
double r451213 = z;
double r451214 = r451212 * r451213;
double r451215 = r451213 * r451211;
double r451216 = r451215 * r451213;
double r451217 = t;
double r451218 = r451210 * r451217;
double r451219 = r451216 - r451218;
double r451220 = r451214 / r451219;
double r451221 = r451209 - r451220;
return r451221;
}
double f(double x, double y, double z, double t) {
double r451222 = x;
double r451223 = y;
double r451224 = 2.0;
double r451225 = z;
double r451226 = r451224 * r451225;
double r451227 = t;
double r451228 = r451227 / r451225;
double r451229 = r451228 * r451223;
double r451230 = r451226 - r451229;
double r451231 = r451230 / r451224;
double r451232 = r451223 / r451231;
double r451233 = r451222 - r451232;
return r451233;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.7 |
|---|---|
| Target | 0.1 |
| Herbie | 1.2 |
Initial program 11.7
rmApplied associate-/l*6.9
rmApplied associate-/l*6.9
Simplified3.1
rmApplied associate-/l*2.4
rmApplied associate-/r/1.2
Final simplification1.2
herbie shell --seed 2020062
(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)))))