x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y \cdot 2}{z \cdot 2 - \frac{t}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \frac{y}{\sqrt[3]{z}}}double f(double x, double y, double z, double t) {
double r478993 = x;
double r478994 = y;
double r478995 = 2.0;
double r478996 = r478994 * r478995;
double r478997 = z;
double r478998 = r478996 * r478997;
double r478999 = r478997 * r478995;
double r479000 = r478999 * r478997;
double r479001 = t;
double r479002 = r478994 * r479001;
double r479003 = r479000 - r479002;
double r479004 = r478998 / r479003;
double r479005 = r478993 - r479004;
return r479005;
}
double f(double x, double y, double z, double t) {
double r479006 = x;
double r479007 = y;
double r479008 = 2.0;
double r479009 = r479007 * r479008;
double r479010 = z;
double r479011 = r479010 * r479008;
double r479012 = t;
double r479013 = cbrt(r479010);
double r479014 = r479013 * r479013;
double r479015 = r479012 / r479014;
double r479016 = r479007 / r479013;
double r479017 = r479015 * r479016;
double r479018 = r479011 - r479017;
double r479019 = r479009 / r479018;
double r479020 = r479006 - r479019;
return r479020;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 12.1 |
|---|---|
| Target | 0.1 |
| Herbie | 1.5 |
Initial program 12.1
rmApplied associate-/l*6.8
rmApplied div-sub6.8
Simplified3.1
Simplified3.1
rmApplied add-cube-cbrt3.2
Applied times-frac1.5
Final simplification1.5
herbie shell --seed 2020020 +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)))))