2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)
2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \sqrt[3]{a + b \cdot c} \cdot \left(\sqrt[3]{a + b \cdot c} \cdot \left(\sqrt[3]{a + b \cdot c} \cdot \left(c \cdot i\right)\right)\right)\right)double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r753341 = 2.0;
double r753342 = x;
double r753343 = y;
double r753344 = r753342 * r753343;
double r753345 = z;
double r753346 = t;
double r753347 = r753345 * r753346;
double r753348 = r753344 + r753347;
double r753349 = a;
double r753350 = b;
double r753351 = c;
double r753352 = r753350 * r753351;
double r753353 = r753349 + r753352;
double r753354 = r753353 * r753351;
double r753355 = i;
double r753356 = r753354 * r753355;
double r753357 = r753348 - r753356;
double r753358 = r753341 * r753357;
return r753358;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r753359 = 2.0;
double r753360 = x;
double r753361 = y;
double r753362 = r753360 * r753361;
double r753363 = z;
double r753364 = t;
double r753365 = r753363 * r753364;
double r753366 = r753362 + r753365;
double r753367 = a;
double r753368 = b;
double r753369 = c;
double r753370 = r753368 * r753369;
double r753371 = r753367 + r753370;
double r753372 = cbrt(r753371);
double r753373 = i;
double r753374 = r753369 * r753373;
double r753375 = r753372 * r753374;
double r753376 = r753372 * r753375;
double r753377 = r753372 * r753376;
double r753378 = r753366 - r753377;
double r753379 = r753359 * r753378;
return r753379;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i
Results
| Original | 6.4 |
|---|---|
| Target | 1.7 |
| Herbie | 2.0 |
Initial program 6.4
rmApplied associate-*l*1.7
rmApplied add-cube-cbrt2.0
Applied associate-*l*2.0
rmApplied associate-*l*2.0
Final simplification2.0
herbie shell --seed 2020062
(FPCore (x y z t a b c i)
:name "Diagrams.ThreeD.Shapes:frustum from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(* 2 (- (+ (* x y) (* z t)) (* (+ a (* b c)) (* c i))))
(* 2 (- (+ (* x y) (* z t)) (* (* (+ a (* b c)) c) i))))