\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\left(\left(z \cdot y - t \cdot a\right) \cdot x - \sqrt[3]{\left(z \cdot c - i \cdot a\right) \cdot b} \cdot \left(\sqrt[3]{\left(z \cdot c - i \cdot a\right) \cdot b} \cdot \sqrt[3]{\left(z \cdot c - i \cdot a\right) \cdot b}\right)\right) + \left(t \cdot c - y \cdot i\right) \cdot jdouble f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r14463731 = x;
double r14463732 = y;
double r14463733 = z;
double r14463734 = r14463732 * r14463733;
double r14463735 = t;
double r14463736 = a;
double r14463737 = r14463735 * r14463736;
double r14463738 = r14463734 - r14463737;
double r14463739 = r14463731 * r14463738;
double r14463740 = b;
double r14463741 = c;
double r14463742 = r14463741 * r14463733;
double r14463743 = i;
double r14463744 = r14463743 * r14463736;
double r14463745 = r14463742 - r14463744;
double r14463746 = r14463740 * r14463745;
double r14463747 = r14463739 - r14463746;
double r14463748 = j;
double r14463749 = r14463741 * r14463735;
double r14463750 = r14463743 * r14463732;
double r14463751 = r14463749 - r14463750;
double r14463752 = r14463748 * r14463751;
double r14463753 = r14463747 + r14463752;
return r14463753;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r14463754 = z;
double r14463755 = y;
double r14463756 = r14463754 * r14463755;
double r14463757 = t;
double r14463758 = a;
double r14463759 = r14463757 * r14463758;
double r14463760 = r14463756 - r14463759;
double r14463761 = x;
double r14463762 = r14463760 * r14463761;
double r14463763 = c;
double r14463764 = r14463754 * r14463763;
double r14463765 = i;
double r14463766 = r14463765 * r14463758;
double r14463767 = r14463764 - r14463766;
double r14463768 = b;
double r14463769 = r14463767 * r14463768;
double r14463770 = cbrt(r14463769);
double r14463771 = r14463770 * r14463770;
double r14463772 = r14463770 * r14463771;
double r14463773 = r14463762 - r14463772;
double r14463774 = r14463757 * r14463763;
double r14463775 = r14463755 * r14463765;
double r14463776 = r14463774 - r14463775;
double r14463777 = j;
double r14463778 = r14463776 * r14463777;
double r14463779 = r14463773 + r14463778;
return r14463779;
}




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




Bits error versus j
Results
| Original | 12.3 |
|---|---|
| Target | 16.3 |
| Herbie | 12.6 |
Initial program 12.3
rmApplied add-cube-cbrt12.6
Final simplification12.6
herbie shell --seed 2019179
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:herbie-target
(if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))