x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y \cdot 2}{1 \cdot \left(2 \cdot z - \left(t \cdot \left(\sqrt[3]{\frac{y}{z}} \cdot \sqrt[3]{\frac{y}{z}}\right)\right) \cdot \sqrt[3]{\frac{y}{z}}\right)}double f(double x, double y, double z, double t) {
double r2142 = x;
double r2143 = y;
double r2144 = 2.0;
double r2145 = r2143 * r2144;
double r2146 = z;
double r2147 = r2145 * r2146;
double r2148 = r2146 * r2144;
double r2149 = r2148 * r2146;
double r2150 = t;
double r2151 = r2143 * r2150;
double r2152 = r2149 - r2151;
double r2153 = r2147 / r2152;
double r2154 = r2142 - r2153;
return r2154;
}
double f(double x, double y, double z, double t) {
double r2155 = x;
double r2156 = y;
double r2157 = 2.0;
double r2158 = r2156 * r2157;
double r2159 = 1.0;
double r2160 = z;
double r2161 = r2157 * r2160;
double r2162 = t;
double r2163 = r2156 / r2160;
double r2164 = cbrt(r2163);
double r2165 = r2164 * r2164;
double r2166 = r2162 * r2165;
double r2167 = r2166 * r2164;
double r2168 = r2161 - r2167;
double r2169 = r2159 * r2168;
double r2170 = r2158 / r2169;
double r2171 = r2155 - r2170;
return r2171;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.7 |
|---|---|
| Target | 0.1 |
| Herbie | 2.3 |
Initial program 11.7
rmApplied associate-/l*6.6
rmApplied *-un-lft-identity6.6
Applied *-un-lft-identity6.6
Applied times-frac6.6
Simplified6.6
Simplified2.7
rmApplied *-un-lft-identity2.7
Applied times-frac2.2
Simplified2.2
rmApplied add-cube-cbrt2.3
Applied associate-*r*2.3
Final simplification2.3
herbie shell --seed 2020025
(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)))))