x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{1}{\mathsf{fma}\left(\frac{z}{y}, 1, -\frac{t}{z \cdot 2}\right)}double f(double x, double y, double z, double t) {
double r347080 = x;
double r347081 = y;
double r347082 = 2.0;
double r347083 = r347081 * r347082;
double r347084 = z;
double r347085 = r347083 * r347084;
double r347086 = r347084 * r347082;
double r347087 = r347086 * r347084;
double r347088 = t;
double r347089 = r347081 * r347088;
double r347090 = r347087 - r347089;
double r347091 = r347085 / r347090;
double r347092 = r347080 - r347091;
return r347092;
}
double f(double x, double y, double z, double t) {
double r347093 = x;
double r347094 = 1.0;
double r347095 = z;
double r347096 = y;
double r347097 = r347095 / r347096;
double r347098 = t;
double r347099 = 2.0;
double r347100 = r347095 * r347099;
double r347101 = r347098 / r347100;
double r347102 = -r347101;
double r347103 = fma(r347097, r347094, r347102);
double r347104 = r347094 / r347103;
double r347105 = r347093 - r347104;
return r347105;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 11.3 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 11.3
rmApplied clear-num11.4
Simplified0.1
Final simplification0.1
herbie shell --seed 2019326 +o rules:numerics
(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)))))