\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)
\begin{array}{l}
\mathbf{if}\;j \le -4.1275721915858132 \cdot 10^{116} \lor \neg \left(j \le 3.8264923473504794 \cdot 10^{79}\right):\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)} \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) \cdot \sqrt[3]{b \cdot \left(c \cdot z - i \cdot a\right)}\right) + \left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(j \cdot c\right) \cdot t + -1 \cdot \left(i \cdot \left(y \cdot j\right)\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r525830 = x;
double r525831 = y;
double r525832 = z;
double r525833 = r525831 * r525832;
double r525834 = t;
double r525835 = a;
double r525836 = r525834 * r525835;
double r525837 = r525833 - r525836;
double r525838 = r525830 * r525837;
double r525839 = b;
double r525840 = c;
double r525841 = r525840 * r525832;
double r525842 = i;
double r525843 = r525842 * r525835;
double r525844 = r525841 - r525843;
double r525845 = r525839 * r525844;
double r525846 = r525838 - r525845;
double r525847 = j;
double r525848 = r525840 * r525834;
double r525849 = r525842 * r525831;
double r525850 = r525848 - r525849;
double r525851 = r525847 * r525850;
double r525852 = r525846 + r525851;
return r525852;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r525853 = j;
double r525854 = -4.127572191585813e+116;
bool r525855 = r525853 <= r525854;
double r525856 = 3.8264923473504794e+79;
bool r525857 = r525853 <= r525856;
double r525858 = !r525857;
bool r525859 = r525855 || r525858;
double r525860 = x;
double r525861 = y;
double r525862 = z;
double r525863 = r525861 * r525862;
double r525864 = t;
double r525865 = a;
double r525866 = r525864 * r525865;
double r525867 = r525863 - r525866;
double r525868 = r525860 * r525867;
double r525869 = b;
double r525870 = c;
double r525871 = r525870 * r525862;
double r525872 = i;
double r525873 = r525872 * r525865;
double r525874 = r525871 - r525873;
double r525875 = r525869 * r525874;
double r525876 = cbrt(r525875);
double r525877 = r525876 * r525876;
double r525878 = r525877 * r525876;
double r525879 = r525868 - r525878;
double r525880 = r525870 * r525864;
double r525881 = r525853 * r525880;
double r525882 = r525872 * r525861;
double r525883 = -r525882;
double r525884 = r525853 * r525883;
double r525885 = r525881 + r525884;
double r525886 = r525879 + r525885;
double r525887 = r525868 - r525875;
double r525888 = r525853 * r525870;
double r525889 = r525888 * r525864;
double r525890 = -1.0;
double r525891 = r525861 * r525853;
double r525892 = r525872 * r525891;
double r525893 = r525890 * r525892;
double r525894 = r525889 + r525893;
double r525895 = r525887 + r525894;
double r525896 = r525859 ? r525886 : r525895;
return r525896;
}




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 | 9.4 |
if j < -4.127572191585813e+116 or 3.8264923473504794e+79 < j Initial program 7.0
rmApplied sub-neg7.0
Applied distribute-lft-in7.0
rmApplied add-cube-cbrt7.2
if -4.127572191585813e+116 < j < 3.8264923473504794e+79Initial program 13.9
rmApplied sub-neg13.9
Applied distribute-lft-in13.9
Taylor expanded around inf 12.0
rmApplied associate-*r*10.1
Final simplification9.4
herbie shell --seed 2020047
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:precision binary64
: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) (pow (* i y) 2))) (+ (* 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) (pow (* i y) 2))) (+ (* 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)))))