\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}\;y4 \le -5.78947116530490396 \cdot 10^{-241}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(k \cdot \left(i \cdot \left(z \cdot y1\right)\right) - \left(i \cdot \left(j \cdot \left(y1 \cdot x\right)\right) + y0 \cdot \left(z \cdot \left(k \cdot b\right)\right)\right)\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}\;y4 \le 6.7251934755243073 \cdot 10^{-133}:\\
\;\;\;\;\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}\;y4 \le 1.0410960937213773 \cdot 10^{-36}:\\
\;\;\;\;\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(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(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right) + \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)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\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 k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r146043 = x;
double r146044 = y;
double r146045 = r146043 * r146044;
double r146046 = z;
double r146047 = t;
double r146048 = r146046 * r146047;
double r146049 = r146045 - r146048;
double r146050 = a;
double r146051 = b;
double r146052 = r146050 * r146051;
double r146053 = c;
double r146054 = i;
double r146055 = r146053 * r146054;
double r146056 = r146052 - r146055;
double r146057 = r146049 * r146056;
double r146058 = j;
double r146059 = r146043 * r146058;
double r146060 = k;
double r146061 = r146046 * r146060;
double r146062 = r146059 - r146061;
double r146063 = y0;
double r146064 = r146063 * r146051;
double r146065 = y1;
double r146066 = r146065 * r146054;
double r146067 = r146064 - r146066;
double r146068 = r146062 * r146067;
double r146069 = r146057 - r146068;
double r146070 = y2;
double r146071 = r146043 * r146070;
double r146072 = y3;
double r146073 = r146046 * r146072;
double r146074 = r146071 - r146073;
double r146075 = r146063 * r146053;
double r146076 = r146065 * r146050;
double r146077 = r146075 - r146076;
double r146078 = r146074 * r146077;
double r146079 = r146069 + r146078;
double r146080 = r146047 * r146058;
double r146081 = r146044 * r146060;
double r146082 = r146080 - r146081;
double r146083 = y4;
double r146084 = r146083 * r146051;
double r146085 = y5;
double r146086 = r146085 * r146054;
double r146087 = r146084 - r146086;
double r146088 = r146082 * r146087;
double r146089 = r146079 + r146088;
double r146090 = r146047 * r146070;
double r146091 = r146044 * r146072;
double r146092 = r146090 - r146091;
double r146093 = r146083 * r146053;
double r146094 = r146085 * r146050;
double r146095 = r146093 - r146094;
double r146096 = r146092 * r146095;
double r146097 = r146089 - r146096;
double r146098 = r146060 * r146070;
double r146099 = r146058 * r146072;
double r146100 = r146098 - r146099;
double r146101 = r146083 * r146065;
double r146102 = r146085 * r146063;
double r146103 = r146101 - r146102;
double r146104 = r146100 * r146103;
double r146105 = r146097 + r146104;
return r146105;
}
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 r146106 = y4;
double r146107 = -5.789471165304904e-241;
bool r146108 = r146106 <= r146107;
double r146109 = x;
double r146110 = y;
double r146111 = r146109 * r146110;
double r146112 = z;
double r146113 = t;
double r146114 = r146112 * r146113;
double r146115 = r146111 - r146114;
double r146116 = a;
double r146117 = b;
double r146118 = r146116 * r146117;
double r146119 = c;
double r146120 = i;
double r146121 = r146119 * r146120;
double r146122 = r146118 - r146121;
double r146123 = r146115 * r146122;
double r146124 = k;
double r146125 = y1;
double r146126 = r146112 * r146125;
double r146127 = r146120 * r146126;
double r146128 = r146124 * r146127;
double r146129 = j;
double r146130 = r146125 * r146109;
double r146131 = r146129 * r146130;
double r146132 = r146120 * r146131;
double r146133 = y0;
double r146134 = r146124 * r146117;
double r146135 = r146112 * r146134;
double r146136 = r146133 * r146135;
double r146137 = r146132 + r146136;
double r146138 = r146128 - r146137;
double r146139 = r146123 - r146138;
double r146140 = y2;
double r146141 = r146109 * r146140;
double r146142 = y3;
double r146143 = r146112 * r146142;
double r146144 = r146141 - r146143;
double r146145 = r146133 * r146119;
double r146146 = r146125 * r146116;
double r146147 = r146145 - r146146;
double r146148 = r146144 * r146147;
double r146149 = r146139 + r146148;
double r146150 = r146113 * r146129;
double r146151 = r146110 * r146124;
double r146152 = r146150 - r146151;
double r146153 = r146106 * r146117;
double r146154 = y5;
double r146155 = r146154 * r146120;
double r146156 = r146153 - r146155;
double r146157 = r146152 * r146156;
double r146158 = r146149 + r146157;
double r146159 = r146113 * r146140;
double r146160 = r146110 * r146142;
double r146161 = r146159 - r146160;
double r146162 = r146106 * r146119;
double r146163 = r146154 * r146116;
double r146164 = r146162 - r146163;
double r146165 = r146161 * r146164;
double r146166 = r146158 - r146165;
double r146167 = r146124 * r146140;
double r146168 = r146129 * r146142;
double r146169 = r146167 - r146168;
double r146170 = r146106 * r146125;
double r146171 = r146154 * r146133;
double r146172 = r146170 - r146171;
double r146173 = r146169 * r146172;
double r146174 = r146166 + r146173;
double r146175 = 6.725193475524307e-133;
bool r146176 = r146106 <= r146175;
double r146177 = r146109 * r146129;
double r146178 = r146112 * r146124;
double r146179 = r146177 - r146178;
double r146180 = r146133 * r146117;
double r146181 = r146125 * r146120;
double r146182 = r146180 - r146181;
double r146183 = r146179 * r146182;
double r146184 = r146123 - r146183;
double r146185 = r146184 + r146148;
double r146186 = r146110 * r146154;
double r146187 = r146120 * r146186;
double r146188 = r146124 * r146187;
double r146189 = r146129 * r146154;
double r146190 = r146120 * r146189;
double r146191 = r146113 * r146190;
double r146192 = r146110 * r146117;
double r146193 = r146106 * r146192;
double r146194 = r146124 * r146193;
double r146195 = r146191 + r146194;
double r146196 = r146188 - r146195;
double r146197 = r146185 + r146196;
double r146198 = r146197 - r146165;
double r146199 = r146198 + r146173;
double r146200 = 1.0410960937213773e-36;
bool r146201 = r146106 <= r146200;
double r146202 = r146185 + r146157;
double r146203 = r146202 - r146165;
double r146204 = r146142 * r146189;
double r146205 = r146124 * r146154;
double r146206 = r146140 * r146205;
double r146207 = r146204 - r146206;
double r146208 = r146133 * r146207;
double r146209 = r146129 * r146106;
double r146210 = r146142 * r146209;
double r146211 = r146125 * r146210;
double r146212 = r146208 - r146211;
double r146213 = r146203 + r146212;
double r146214 = r146157 + r146184;
double r146215 = r146214 - r146165;
double r146216 = r146173 + r146215;
double r146217 = r146201 ? r146213 : r146216;
double r146218 = r146176 ? r146199 : r146217;
double r146219 = r146108 ? r146174 : r146218;
return r146219;
}



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 y4 < -5.789471165304904e-241Initial program 26.8
Taylor expanded around inf 29.0
if -5.789471165304904e-241 < y4 < 6.725193475524307e-133Initial program 26.5
Taylor expanded around inf 27.9
if 6.725193475524307e-133 < y4 < 1.0410960937213773e-36Initial program 25.0
Taylor expanded around inf 27.5
Simplified27.5
if 1.0410960937213773e-36 < y4 Initial program 28.3
Taylor expanded around 0 30.9
Final simplification28.9
herbie shell --seed 2020047
(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)))))