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) - \left(\sqrt[3]{\left(a + b \cdot c\right) \cdot \left(c \cdot i\right)} \cdot \sqrt[3]{\left(a + b \cdot c\right) \cdot \left(c \cdot i\right)}\right) \cdot \left(\sqrt[3]{a + b \cdot c} \cdot \sqrt[3]{c \cdot i}\right)\right)double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r777779 = 2.0;
double r777780 = x;
double r777781 = y;
double r777782 = r777780 * r777781;
double r777783 = z;
double r777784 = t;
double r777785 = r777783 * r777784;
double r777786 = r777782 + r777785;
double r777787 = a;
double r777788 = b;
double r777789 = c;
double r777790 = r777788 * r777789;
double r777791 = r777787 + r777790;
double r777792 = r777791 * r777789;
double r777793 = i;
double r777794 = r777792 * r777793;
double r777795 = r777786 - r777794;
double r777796 = r777779 * r777795;
return r777796;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r777797 = 2.0;
double r777798 = x;
double r777799 = y;
double r777800 = r777798 * r777799;
double r777801 = z;
double r777802 = t;
double r777803 = r777801 * r777802;
double r777804 = r777800 + r777803;
double r777805 = a;
double r777806 = b;
double r777807 = c;
double r777808 = r777806 * r777807;
double r777809 = r777805 + r777808;
double r777810 = i;
double r777811 = r777807 * r777810;
double r777812 = r777809 * r777811;
double r777813 = cbrt(r777812);
double r777814 = r777813 * r777813;
double r777815 = cbrt(r777809);
double r777816 = cbrt(r777811);
double r777817 = r777815 * r777816;
double r777818 = r777814 * r777817;
double r777819 = r777804 - r777818;
double r777820 = r777797 * r777819;
return r777820;
}




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.2 |
|---|---|
| Target | 1.7 |
| Herbie | 2.0 |
Initial program 6.2
rmApplied associate-*l*1.7
rmApplied add-cube-cbrt2.1
rmApplied cbrt-prod2.0
Final simplification2.0
herbie shell --seed 2020025
(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))))