x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}x - \frac{y \cdot 2}{\sqrt[3]{2 \cdot {z}^{2} - t \cdot y} \cdot \sqrt[3]{2 \cdot {z}^{2} - t \cdot y}} \cdot \frac{z}{\sqrt[3]{2 \cdot {z}^{2} - t \cdot y}}double f(double x, double y, double z, double t) {
double r462258 = x;
double r462259 = y;
double r462260 = 2.0;
double r462261 = r462259 * r462260;
double r462262 = z;
double r462263 = r462261 * r462262;
double r462264 = r462262 * r462260;
double r462265 = r462264 * r462262;
double r462266 = t;
double r462267 = r462259 * r462266;
double r462268 = r462265 - r462267;
double r462269 = r462263 / r462268;
double r462270 = r462258 - r462269;
return r462270;
}
double f(double x, double y, double z, double t) {
double r462271 = x;
double r462272 = y;
double r462273 = 2.0;
double r462274 = r462272 * r462273;
double r462275 = z;
double r462276 = 2.0;
double r462277 = pow(r462275, r462276);
double r462278 = r462273 * r462277;
double r462279 = t;
double r462280 = r462279 * r462272;
double r462281 = r462278 - r462280;
double r462282 = cbrt(r462281);
double r462283 = r462282 * r462282;
double r462284 = r462274 / r462283;
double r462285 = r462275 / r462282;
double r462286 = r462284 * r462285;
double r462287 = r462271 - r462286;
return r462287;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.5 |
|---|---|
| Target | 0.1 |
| Herbie | 6.4 |
Initial program 11.5
rmApplied *-un-lft-identity11.5
Applied times-frac6.7
Simplified6.7
Simplified6.7
rmApplied add-cube-cbrt6.9
Applied *-un-lft-identity6.9
Applied times-frac6.9
Applied associate-*r*6.4
Simplified6.4
Final simplification6.4
herbie shell --seed 2020002
(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)))))