\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)
\begin{array}{l}
\mathbf{if}\;j \le -2.029345741216260493944686865426070490336 \cdot 10^{-81}:\\
\;\;\;\;\left(\left(\left(\left(\left(\sqrt[3]{x \cdot y - z \cdot t} \cdot \sqrt[3]{x \cdot y - z \cdot t}\right) \cdot \left(\sqrt[3]{x \cdot y - z \cdot t} \cdot \left(a \cdot b - c \cdot i\right)\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(\sqrt[3]{t \cdot y2 - y \cdot y3} \cdot \sqrt[3]{t \cdot y2 - y \cdot y3}\right) \cdot \left(\sqrt[3]{t \cdot y2 - y \cdot y3} \cdot \left(y4 \cdot c - y5 \cdot a\right)\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;j \le -3.447661941177338671628761237992685500244 \cdot 10^{-212}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(k \cdot \left(i \cdot \left(y \cdot y5\right)\right) - \left(t \cdot \left(i \cdot \left(j \cdot y5\right)\right) + k \cdot \left(y4 \cdot \left(y \cdot b\right)\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;j \le 1.393275820036448566612978694944917519779 \cdot 10^{-238}:\\
\;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(i \cdot \left(z \cdot c\right)\right) - \left(i \cdot \left(c \cdot \left(y \cdot x\right)\right) + a \cdot \left(t \cdot \left(z \cdot b\right)\right)\right)\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;j \le 1.964653697661321230509672879947875742343 \cdot 10^{-149}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(k \cdot \left(i \cdot \left(y \cdot y5\right)\right) - \left(t \cdot \left(i \cdot \left(j \cdot y5\right)\right) + k \cdot \left(y4 \cdot \left(y \cdot b\right)\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;j \le 1.383382879714532992312018888273659492431 \cdot 10^{-77}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + 0\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(i \cdot \left(z \cdot c\right)\right) - \left(i \cdot \left(c \cdot \left(y \cdot x\right)\right) + a \cdot \left(t \cdot \left(z \cdot b\right)\right)\right)\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r581878 = x;
double r581879 = y;
double r581880 = r581878 * r581879;
double r581881 = z;
double r581882 = t;
double r581883 = r581881 * r581882;
double r581884 = r581880 - r581883;
double r581885 = a;
double r581886 = b;
double r581887 = r581885 * r581886;
double r581888 = c;
double r581889 = i;
double r581890 = r581888 * r581889;
double r581891 = r581887 - r581890;
double r581892 = r581884 * r581891;
double r581893 = j;
double r581894 = r581878 * r581893;
double r581895 = k;
double r581896 = r581881 * r581895;
double r581897 = r581894 - r581896;
double r581898 = y0;
double r581899 = r581898 * r581886;
double r581900 = y1;
double r581901 = r581900 * r581889;
double r581902 = r581899 - r581901;
double r581903 = r581897 * r581902;
double r581904 = r581892 - r581903;
double r581905 = y2;
double r581906 = r581878 * r581905;
double r581907 = y3;
double r581908 = r581881 * r581907;
double r581909 = r581906 - r581908;
double r581910 = r581898 * r581888;
double r581911 = r581900 * r581885;
double r581912 = r581910 - r581911;
double r581913 = r581909 * r581912;
double r581914 = r581904 + r581913;
double r581915 = r581882 * r581893;
double r581916 = r581879 * r581895;
double r581917 = r581915 - r581916;
double r581918 = y4;
double r581919 = r581918 * r581886;
double r581920 = y5;
double r581921 = r581920 * r581889;
double r581922 = r581919 - r581921;
double r581923 = r581917 * r581922;
double r581924 = r581914 + r581923;
double r581925 = r581882 * r581905;
double r581926 = r581879 * r581907;
double r581927 = r581925 - r581926;
double r581928 = r581918 * r581888;
double r581929 = r581920 * r581885;
double r581930 = r581928 - r581929;
double r581931 = r581927 * r581930;
double r581932 = r581924 - r581931;
double r581933 = r581895 * r581905;
double r581934 = r581893 * r581907;
double r581935 = r581933 - r581934;
double r581936 = r581918 * r581900;
double r581937 = r581920 * r581898;
double r581938 = r581936 - r581937;
double r581939 = r581935 * r581938;
double r581940 = r581932 + r581939;
return r581940;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r581941 = j;
double r581942 = -2.0293457412162605e-81;
bool r581943 = r581941 <= r581942;
double r581944 = x;
double r581945 = y;
double r581946 = r581944 * r581945;
double r581947 = z;
double r581948 = t;
double r581949 = r581947 * r581948;
double r581950 = r581946 - r581949;
double r581951 = cbrt(r581950);
double r581952 = r581951 * r581951;
double r581953 = a;
double r581954 = b;
double r581955 = r581953 * r581954;
double r581956 = c;
double r581957 = i;
double r581958 = r581956 * r581957;
double r581959 = r581955 - r581958;
double r581960 = r581951 * r581959;
double r581961 = r581952 * r581960;
double r581962 = r581944 * r581941;
double r581963 = k;
double r581964 = r581947 * r581963;
double r581965 = r581962 - r581964;
double r581966 = y0;
double r581967 = r581966 * r581954;
double r581968 = y1;
double r581969 = r581968 * r581957;
double r581970 = r581967 - r581969;
double r581971 = r581965 * r581970;
double r581972 = r581961 - r581971;
double r581973 = y2;
double r581974 = r581944 * r581973;
double r581975 = y3;
double r581976 = r581947 * r581975;
double r581977 = r581974 - r581976;
double r581978 = r581966 * r581956;
double r581979 = r581968 * r581953;
double r581980 = r581978 - r581979;
double r581981 = r581977 * r581980;
double r581982 = r581972 + r581981;
double r581983 = r581948 * r581941;
double r581984 = r581945 * r581963;
double r581985 = r581983 - r581984;
double r581986 = y4;
double r581987 = r581986 * r581954;
double r581988 = y5;
double r581989 = r581988 * r581957;
double r581990 = r581987 - r581989;
double r581991 = r581985 * r581990;
double r581992 = r581982 + r581991;
double r581993 = r581948 * r581973;
double r581994 = r581945 * r581975;
double r581995 = r581993 - r581994;
double r581996 = cbrt(r581995);
double r581997 = r581996 * r581996;
double r581998 = r581986 * r581956;
double r581999 = r581988 * r581953;
double r582000 = r581998 - r581999;
double r582001 = r581996 * r582000;
double r582002 = r581997 * r582001;
double r582003 = r581992 - r582002;
double r582004 = r581963 * r581973;
double r582005 = r581941 * r581975;
double r582006 = r582004 - r582005;
double r582007 = r581986 * r581968;
double r582008 = r581988 * r581966;
double r582009 = r582007 - r582008;
double r582010 = r582006 * r582009;
double r582011 = r582003 + r582010;
double r582012 = -3.4476619411773387e-212;
bool r582013 = r581941 <= r582012;
double r582014 = r581950 * r581959;
double r582015 = r582014 - r581971;
double r582016 = r582015 + r581981;
double r582017 = r581945 * r581988;
double r582018 = r581957 * r582017;
double r582019 = r581963 * r582018;
double r582020 = r581941 * r581988;
double r582021 = r581957 * r582020;
double r582022 = r581948 * r582021;
double r582023 = r581945 * r581954;
double r582024 = r581986 * r582023;
double r582025 = r581963 * r582024;
double r582026 = r582022 + r582025;
double r582027 = r582019 - r582026;
double r582028 = r582016 + r582027;
double r582029 = r581995 * r582000;
double r582030 = r582028 - r582029;
double r582031 = r582030 + r582010;
double r582032 = 1.3932758200364486e-238;
bool r582033 = r581941 <= r582032;
double r582034 = r581947 * r581956;
double r582035 = r581957 * r582034;
double r582036 = r581948 * r582035;
double r582037 = r581945 * r581944;
double r582038 = r581956 * r582037;
double r582039 = r581957 * r582038;
double r582040 = r581947 * r581954;
double r582041 = r581948 * r582040;
double r582042 = r581953 * r582041;
double r582043 = r582039 + r582042;
double r582044 = r582036 - r582043;
double r582045 = r582044 - r581971;
double r582046 = r582045 + r581981;
double r582047 = r582046 + r581991;
double r582048 = r582047 - r582029;
double r582049 = r582048 + r582010;
double r582050 = 1.9646536976613212e-149;
bool r582051 = r581941 <= r582050;
double r582052 = 1.383382879714533e-77;
bool r582053 = r581941 <= r582052;
double r582054 = 0.0;
double r582055 = r582015 + r582054;
double r582056 = r582055 + r581991;
double r582057 = r582056 - r582029;
double r582058 = r582057 + r582010;
double r582059 = r582053 ? r582058 : r582049;
double r582060 = r582051 ? r582031 : r582059;
double r582061 = r582033 ? r582049 : r582060;
double r582062 = r582013 ? r582031 : r582061;
double r582063 = r581943 ? r582011 : r582062;
return r582063;
}




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




Bits error versus k




Bits error versus y0




Bits error versus y1




Bits error versus y2




Bits error versus y3




Bits error versus y4




Bits error versus y5
Results
| Original | 26.9 |
|---|---|
| Target | 30.5 |
| Herbie | 28.8 |
if j < -2.0293457412162605e-81Initial program 27.0
rmApplied add-cube-cbrt27.1
Applied associate-*l*27.1
rmApplied add-cube-cbrt27.1
Applied associate-*l*27.1
if -2.0293457412162605e-81 < j < -3.4476619411773387e-212 or 1.3932758200364486e-238 < j < 1.9646536976613212e-149Initial program 26.0
Taylor expanded around inf 26.8
if -3.4476619411773387e-212 < j < 1.3932758200364486e-238 or 1.383382879714533e-77 < j Initial program 27.7
Taylor expanded around inf 30.7
if 1.9646536976613212e-149 < j < 1.383382879714533e-77Initial program 24.0
Taylor expanded around 0 30.2
Final simplification28.8
herbie shell --seed 2019354
(FPCore (x y z t a b c i j k y0 y1 y2 y3 y4 y5)
:name "Linear.Matrix:det44 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< y4 -7.206256231996481e+60) (- (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))))) (- (/ (- (* y2 t) (* y3 y)) (/ 1 (- (* y4 c) (* y5 a)))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (if (< y4 -3.364603505246317e-66) (+ (- (- (- (* (* t c) (* i z)) (* (* a t) (* b z))) (* (* y c) (* i x))) (* (- (* b y0) (* i y1)) (- (* j x) (* k z)))) (- (* (- (* y0 c) (* a y1)) (- (* x y2) (* z y3))) (- (* (- (* t y2) (* y y3)) (- (* y4 c) (* a y5))) (* (- (* y1 y4) (* y5 y0)) (- (* k y2) (* j y3)))))) (if (< y4 -1.2000065055686116e-105) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 6.718963124057495e-279) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (if (< y4 4.77962681403792e-222) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 2.2852241541266835e-175) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (- (* k (* i (* z y1))) (+ (* j (* i (* x y1))) (* y0 (* k (* z b)))))) (- (* z (* y3 (* a y1))) (+ (* y2 (* x (* a y1))) (* y0 (* z (* c y3)))))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))))))))
(+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (* (- (* x j) (* z k)) (- (* y0 b) (* y1 i)))) (* (- (* x y2) (* z y3)) (- (* y0 c) (* y1 a)))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0)))))