\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}\;y2 \le -1.840931593497621216484670601667502261573 \cdot 10^{-31}:\\
\;\;\;\;\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(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;y2 \le 8.683818911703201872346550381335232555531 \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(\left(x \cdot j - z \cdot k\right) \cdot \left(\sqrt[3]{y0 \cdot b - y1 \cdot i} \cdot \sqrt[3]{y0 \cdot b - y1 \cdot i}\right)\right) \cdot \sqrt[3]{y0 \cdot b - y1 \cdot i}\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(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right) - y2 \cdot \left(k \cdot y5\right)\right) - y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right) + \left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(\left(x \cdot j - z \cdot k\right) \cdot \left(\sqrt[3]{y0 \cdot b - y1 \cdot i} \cdot \sqrt[3]{y0 \cdot b - y1 \cdot i}\right)\right) \cdot \sqrt[3]{y0 \cdot b - y1 \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 r139019 = x;
double r139020 = y;
double r139021 = r139019 * r139020;
double r139022 = z;
double r139023 = t;
double r139024 = r139022 * r139023;
double r139025 = r139021 - r139024;
double r139026 = a;
double r139027 = b;
double r139028 = r139026 * r139027;
double r139029 = c;
double r139030 = i;
double r139031 = r139029 * r139030;
double r139032 = r139028 - r139031;
double r139033 = r139025 * r139032;
double r139034 = j;
double r139035 = r139019 * r139034;
double r139036 = k;
double r139037 = r139022 * r139036;
double r139038 = r139035 - r139037;
double r139039 = y0;
double r139040 = r139039 * r139027;
double r139041 = y1;
double r139042 = r139041 * r139030;
double r139043 = r139040 - r139042;
double r139044 = r139038 * r139043;
double r139045 = r139033 - r139044;
double r139046 = y2;
double r139047 = r139019 * r139046;
double r139048 = y3;
double r139049 = r139022 * r139048;
double r139050 = r139047 - r139049;
double r139051 = r139039 * r139029;
double r139052 = r139041 * r139026;
double r139053 = r139051 - r139052;
double r139054 = r139050 * r139053;
double r139055 = r139045 + r139054;
double r139056 = r139023 * r139034;
double r139057 = r139020 * r139036;
double r139058 = r139056 - r139057;
double r139059 = y4;
double r139060 = r139059 * r139027;
double r139061 = y5;
double r139062 = r139061 * r139030;
double r139063 = r139060 - r139062;
double r139064 = r139058 * r139063;
double r139065 = r139055 + r139064;
double r139066 = r139023 * r139046;
double r139067 = r139020 * r139048;
double r139068 = r139066 - r139067;
double r139069 = r139059 * r139029;
double r139070 = r139061 * r139026;
double r139071 = r139069 - r139070;
double r139072 = r139068 * r139071;
double r139073 = r139065 - r139072;
double r139074 = r139036 * r139046;
double r139075 = r139034 * r139048;
double r139076 = r139074 - r139075;
double r139077 = r139059 * r139041;
double r139078 = r139061 * r139039;
double r139079 = r139077 - r139078;
double r139080 = r139076 * r139079;
double r139081 = r139073 + r139080;
return r139081;
}
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 r139082 = y2;
double r139083 = -1.8409315934976212e-31;
bool r139084 = r139082 <= r139083;
double r139085 = x;
double r139086 = y;
double r139087 = r139085 * r139086;
double r139088 = z;
double r139089 = t;
double r139090 = r139088 * r139089;
double r139091 = r139087 - r139090;
double r139092 = a;
double r139093 = b;
double r139094 = r139092 * r139093;
double r139095 = c;
double r139096 = i;
double r139097 = r139095 * r139096;
double r139098 = r139094 - r139097;
double r139099 = r139091 * r139098;
double r139100 = j;
double r139101 = r139085 * r139100;
double r139102 = k;
double r139103 = r139088 * r139102;
double r139104 = r139101 - r139103;
double r139105 = y0;
double r139106 = r139105 * r139093;
double r139107 = y1;
double r139108 = r139107 * r139096;
double r139109 = r139106 - r139108;
double r139110 = r139104 * r139109;
double r139111 = r139099 - r139110;
double r139112 = r139085 * r139082;
double r139113 = y3;
double r139114 = r139088 * r139113;
double r139115 = r139112 - r139114;
double r139116 = r139105 * r139095;
double r139117 = r139107 * r139092;
double r139118 = r139116 - r139117;
double r139119 = r139115 * r139118;
double r139120 = r139111 + r139119;
double r139121 = r139089 * r139100;
double r139122 = r139086 * r139102;
double r139123 = r139121 - r139122;
double r139124 = y4;
double r139125 = r139124 * r139093;
double r139126 = y5;
double r139127 = r139126 * r139096;
double r139128 = r139125 - r139127;
double r139129 = r139123 * r139128;
double r139130 = r139120 + r139129;
double r139131 = r139102 * r139082;
double r139132 = r139100 * r139113;
double r139133 = r139131 - r139132;
double r139134 = r139124 * r139107;
double r139135 = r139126 * r139105;
double r139136 = r139134 - r139135;
double r139137 = r139133 * r139136;
double r139138 = r139130 + r139137;
double r139139 = 8.683818911703202e-77;
bool r139140 = r139082 <= r139139;
double r139141 = cbrt(r139109);
double r139142 = r139141 * r139141;
double r139143 = r139104 * r139142;
double r139144 = r139143 * r139141;
double r139145 = r139099 - r139144;
double r139146 = r139145 + r139119;
double r139147 = r139146 + r139129;
double r139148 = r139089 * r139082;
double r139149 = r139086 * r139113;
double r139150 = r139148 - r139149;
double r139151 = r139124 * r139095;
double r139152 = r139126 * r139092;
double r139153 = r139151 - r139152;
double r139154 = r139150 * r139153;
double r139155 = r139147 - r139154;
double r139156 = r139100 * r139126;
double r139157 = r139113 * r139156;
double r139158 = r139102 * r139126;
double r139159 = r139082 * r139158;
double r139160 = r139157 - r139159;
double r139161 = r139105 * r139160;
double r139162 = r139100 * r139124;
double r139163 = r139113 * r139162;
double r139164 = r139107 * r139163;
double r139165 = r139161 - r139164;
double r139166 = r139155 + r139165;
double r139167 = r139119 + r139145;
double r139168 = r139167 - r139154;
double r139169 = r139168 + r139137;
double r139170 = r139140 ? r139166 : r139169;
double r139171 = r139084 ? r139138 : r139170;
return r139171;
}



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
if y2 < -1.8409315934976212e-31Initial program 28.6
Taylor expanded around 0 34.6
if -1.8409315934976212e-31 < y2 < 8.683818911703202e-77Initial program 25.9
rmApplied add-cube-cbrt26.1
Applied associate-*r*26.1
Taylor expanded around inf 27.5
Simplified27.5
if 8.683818911703202e-77 < y2 Initial program 27.6
rmApplied add-cube-cbrt27.7
Applied associate-*r*27.7
Taylor expanded around 0 30.4
Final simplification29.6
herbie shell --seed 2019212
(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
(+ (- (+ (+ (- (* (- (* 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)))))