\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}\;a \le -4544251161.4776515960693359375 \lor \neg \left(a \le 1.713158425446813035880347350755354318048 \cdot 10^{57}\right):\\
\;\;\;\;\left(a \cdot \left(i \cdot b\right) - \left(z \cdot \left(b \cdot c\right) + a \cdot \left(x \cdot t\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)} \cdot \sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)}\right) \cdot \sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)} - \left(z \cdot \left(b \cdot c\right) + \left(-b\right) \cdot \left(i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r377846 = x;
double r377847 = y;
double r377848 = z;
double r377849 = r377847 * r377848;
double r377850 = t;
double r377851 = a;
double r377852 = r377850 * r377851;
double r377853 = r377849 - r377852;
double r377854 = r377846 * r377853;
double r377855 = b;
double r377856 = c;
double r377857 = r377856 * r377848;
double r377858 = i;
double r377859 = r377858 * r377851;
double r377860 = r377857 - r377859;
double r377861 = r377855 * r377860;
double r377862 = r377854 - r377861;
double r377863 = j;
double r377864 = r377856 * r377850;
double r377865 = r377858 * r377847;
double r377866 = r377864 - r377865;
double r377867 = r377863 * r377866;
double r377868 = r377862 + r377867;
return r377868;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r377869 = a;
double r377870 = -4544251161.477652;
bool r377871 = r377869 <= r377870;
double r377872 = 1.713158425446813e+57;
bool r377873 = r377869 <= r377872;
double r377874 = !r377873;
bool r377875 = r377871 || r377874;
double r377876 = i;
double r377877 = b;
double r377878 = r377876 * r377877;
double r377879 = r377869 * r377878;
double r377880 = z;
double r377881 = c;
double r377882 = r377877 * r377881;
double r377883 = r377880 * r377882;
double r377884 = x;
double r377885 = t;
double r377886 = r377884 * r377885;
double r377887 = r377869 * r377886;
double r377888 = r377883 + r377887;
double r377889 = r377879 - r377888;
double r377890 = j;
double r377891 = r377881 * r377885;
double r377892 = y;
double r377893 = r377876 * r377892;
double r377894 = r377891 - r377893;
double r377895 = r377890 * r377894;
double r377896 = r377889 + r377895;
double r377897 = r377892 * r377880;
double r377898 = r377885 * r377869;
double r377899 = r377897 - r377898;
double r377900 = r377884 * r377899;
double r377901 = cbrt(r377900);
double r377902 = r377901 * r377901;
double r377903 = r377902 * r377901;
double r377904 = -r377877;
double r377905 = r377876 * r377869;
double r377906 = r377904 * r377905;
double r377907 = r377883 + r377906;
double r377908 = r377903 - r377907;
double r377909 = r377908 + r377895;
double r377910 = r377875 ? r377896 : r377909;
return r377910;
}




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 | 11.8 |
|---|---|
| Target | 15.8 |
| Herbie | 10.2 |
if a < -4544251161.477652 or 1.713158425446813e+57 < a Initial program 18.2
Taylor expanded around inf 11.8
if -4544251161.477652 < a < 1.713158425446813e+57Initial program 8.7
rmApplied add-cube-cbrt9.0
Applied associate-*l*9.0
rmApplied sub-neg9.0
Applied distribute-lft-in9.0
Applied distribute-lft-in9.0
Simplified9.3
Simplified9.2
rmApplied add-cube-cbrt9.5
Final simplification10.2
herbie shell --seed 2019308
(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.1209789191959122e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.7125538182184851e-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.63353334603158369e-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)))))