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(a + b \cdot c\right) \cdot \left(i \cdot c\right)\right)
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r817678 = 2.0;
double r817679 = x;
double r817680 = y;
double r817681 = r817679 * r817680;
double r817682 = z;
double r817683 = t;
double r817684 = r817682 * r817683;
double r817685 = r817681 + r817684;
double r817686 = a;
double r817687 = b;
double r817688 = c;
double r817689 = r817687 * r817688;
double r817690 = r817686 + r817689;
double r817691 = r817690 * r817688;
double r817692 = i;
double r817693 = r817691 * r817692;
double r817694 = r817685 - r817693;
double r817695 = r817678 * r817694;
return r817695;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r817696 = 2.0;
double r817697 = x;
double r817698 = y;
double r817699 = r817697 * r817698;
double r817700 = z;
double r817701 = t;
double r817702 = r817700 * r817701;
double r817703 = r817699 + r817702;
double r817704 = a;
double r817705 = b;
double r817706 = c;
double r817707 = r817705 * r817706;
double r817708 = r817704 + r817707;
double r817709 = i;
double r817710 = r817709 * r817706;
double r817711 = r817708 * r817710;
double r817712 = r817703 - r817711;
double r817713 = r817696 * r817712;
return r817713;
}




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.1 |
|---|---|
| Target | 1.8 |
| Herbie | 1.8 |
Initial program 6.1
rmApplied associate-*l*1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2020045
(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))))