\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}\;y0 \le -2.5668315936367674 \cdot 10^{-277}:\\
\;\;\;\;\left(\left(\left(\left(c \cdot y0 - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - i \cdot y5\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(\sqrt[3]{k \cdot y2 - y3 \cdot j} \cdot \sqrt[3]{k \cdot y2 - y3 \cdot j}\right) \cdot \left(\sqrt[3]{k \cdot y2 - y3 \cdot j} \cdot \left(y4 \cdot y1 - y0 \cdot y5\right)\right)\\
\mathbf{elif}\;y0 \le 6.418500696234417 \cdot 10^{+26}:\\
\;\;\;\;\left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - i \cdot y5\right) + \left(\left(\left(\left(z \cdot y1\right) \cdot y3\right) \cdot a - \left(c \cdot \left(\left(y3 \cdot y0\right) \cdot z\right) + \left(x \cdot \left(y2 \cdot y1\right)\right) \cdot a\right)\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(y4 \cdot y1 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(y \cdot \left(y5 \cdot k\right)\right) \cdot i - \left(t \cdot \left(\left(y5 \cdot j\right) \cdot i\right) + \left(\left(y4 \cdot b\right) \cdot y\right) \cdot k\right)\right) + \left(\left(c \cdot y0 - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(y4 \cdot y1 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\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 r13145048 = x;
double r13145049 = y;
double r13145050 = r13145048 * r13145049;
double r13145051 = z;
double r13145052 = t;
double r13145053 = r13145051 * r13145052;
double r13145054 = r13145050 - r13145053;
double r13145055 = a;
double r13145056 = b;
double r13145057 = r13145055 * r13145056;
double r13145058 = c;
double r13145059 = i;
double r13145060 = r13145058 * r13145059;
double r13145061 = r13145057 - r13145060;
double r13145062 = r13145054 * r13145061;
double r13145063 = j;
double r13145064 = r13145048 * r13145063;
double r13145065 = k;
double r13145066 = r13145051 * r13145065;
double r13145067 = r13145064 - r13145066;
double r13145068 = y0;
double r13145069 = r13145068 * r13145056;
double r13145070 = y1;
double r13145071 = r13145070 * r13145059;
double r13145072 = r13145069 - r13145071;
double r13145073 = r13145067 * r13145072;
double r13145074 = r13145062 - r13145073;
double r13145075 = y2;
double r13145076 = r13145048 * r13145075;
double r13145077 = y3;
double r13145078 = r13145051 * r13145077;
double r13145079 = r13145076 - r13145078;
double r13145080 = r13145068 * r13145058;
double r13145081 = r13145070 * r13145055;
double r13145082 = r13145080 - r13145081;
double r13145083 = r13145079 * r13145082;
double r13145084 = r13145074 + r13145083;
double r13145085 = r13145052 * r13145063;
double r13145086 = r13145049 * r13145065;
double r13145087 = r13145085 - r13145086;
double r13145088 = y4;
double r13145089 = r13145088 * r13145056;
double r13145090 = y5;
double r13145091 = r13145090 * r13145059;
double r13145092 = r13145089 - r13145091;
double r13145093 = r13145087 * r13145092;
double r13145094 = r13145084 + r13145093;
double r13145095 = r13145052 * r13145075;
double r13145096 = r13145049 * r13145077;
double r13145097 = r13145095 - r13145096;
double r13145098 = r13145088 * r13145058;
double r13145099 = r13145090 * r13145055;
double r13145100 = r13145098 - r13145099;
double r13145101 = r13145097 * r13145100;
double r13145102 = r13145094 - r13145101;
double r13145103 = r13145065 * r13145075;
double r13145104 = r13145063 * r13145077;
double r13145105 = r13145103 - r13145104;
double r13145106 = r13145088 * r13145070;
double r13145107 = r13145090 * r13145068;
double r13145108 = r13145106 - r13145107;
double r13145109 = r13145105 * r13145108;
double r13145110 = r13145102 + r13145109;
return r13145110;
}
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 r13145111 = y0;
double r13145112 = -2.5668315936367674e-277;
bool r13145113 = r13145111 <= r13145112;
double r13145114 = c;
double r13145115 = r13145114 * r13145111;
double r13145116 = y1;
double r13145117 = a;
double r13145118 = r13145116 * r13145117;
double r13145119 = r13145115 - r13145118;
double r13145120 = x;
double r13145121 = y2;
double r13145122 = r13145120 * r13145121;
double r13145123 = z;
double r13145124 = y3;
double r13145125 = r13145123 * r13145124;
double r13145126 = r13145122 - r13145125;
double r13145127 = r13145119 * r13145126;
double r13145128 = y;
double r13145129 = r13145120 * r13145128;
double r13145130 = t;
double r13145131 = r13145130 * r13145123;
double r13145132 = r13145129 - r13145131;
double r13145133 = b;
double r13145134 = r13145117 * r13145133;
double r13145135 = i;
double r13145136 = r13145135 * r13145114;
double r13145137 = r13145134 - r13145136;
double r13145138 = r13145132 * r13145137;
double r13145139 = r13145133 * r13145111;
double r13145140 = r13145116 * r13145135;
double r13145141 = r13145139 - r13145140;
double r13145142 = j;
double r13145143 = r13145120 * r13145142;
double r13145144 = k;
double r13145145 = r13145123 * r13145144;
double r13145146 = r13145143 - r13145145;
double r13145147 = r13145141 * r13145146;
double r13145148 = r13145138 - r13145147;
double r13145149 = r13145127 + r13145148;
double r13145150 = r13145130 * r13145142;
double r13145151 = r13145128 * r13145144;
double r13145152 = r13145150 - r13145151;
double r13145153 = y4;
double r13145154 = r13145153 * r13145133;
double r13145155 = y5;
double r13145156 = r13145135 * r13145155;
double r13145157 = r13145154 - r13145156;
double r13145158 = r13145152 * r13145157;
double r13145159 = r13145149 + r13145158;
double r13145160 = r13145130 * r13145121;
double r13145161 = r13145128 * r13145124;
double r13145162 = r13145160 - r13145161;
double r13145163 = r13145153 * r13145114;
double r13145164 = r13145155 * r13145117;
double r13145165 = r13145163 - r13145164;
double r13145166 = r13145162 * r13145165;
double r13145167 = r13145159 - r13145166;
double r13145168 = r13145144 * r13145121;
double r13145169 = r13145124 * r13145142;
double r13145170 = r13145168 - r13145169;
double r13145171 = cbrt(r13145170);
double r13145172 = r13145171 * r13145171;
double r13145173 = r13145153 * r13145116;
double r13145174 = r13145111 * r13145155;
double r13145175 = r13145173 - r13145174;
double r13145176 = r13145171 * r13145175;
double r13145177 = r13145172 * r13145176;
double r13145178 = r13145167 + r13145177;
double r13145179 = 6.418500696234417e+26;
bool r13145180 = r13145111 <= r13145179;
double r13145181 = r13145123 * r13145116;
double r13145182 = r13145181 * r13145124;
double r13145183 = r13145182 * r13145117;
double r13145184 = r13145124 * r13145111;
double r13145185 = r13145184 * r13145123;
double r13145186 = r13145114 * r13145185;
double r13145187 = r13145121 * r13145116;
double r13145188 = r13145120 * r13145187;
double r13145189 = r13145188 * r13145117;
double r13145190 = r13145186 + r13145189;
double r13145191 = r13145183 - r13145190;
double r13145192 = r13145191 + r13145148;
double r13145193 = r13145158 + r13145192;
double r13145194 = r13145193 - r13145166;
double r13145195 = r13145175 * r13145170;
double r13145196 = r13145194 + r13145195;
double r13145197 = r13145155 * r13145144;
double r13145198 = r13145128 * r13145197;
double r13145199 = r13145198 * r13145135;
double r13145200 = r13145155 * r13145142;
double r13145201 = r13145200 * r13145135;
double r13145202 = r13145130 * r13145201;
double r13145203 = r13145154 * r13145128;
double r13145204 = r13145203 * r13145144;
double r13145205 = r13145202 + r13145204;
double r13145206 = r13145199 - r13145205;
double r13145207 = r13145206 + r13145149;
double r13145208 = r13145207 - r13145166;
double r13145209 = r13145208 + r13145195;
double r13145210 = r13145180 ? r13145196 : r13145209;
double r13145211 = r13145113 ? r13145178 : r13145210;
return r13145211;
}




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 | 25.4 |
|---|---|
| Target | 29.4 |
| Herbie | 26.3 |
if y0 < -2.5668315936367674e-277Initial program 25.2
rmApplied add-cube-cbrt25.3
Applied associate-*l*25.3
if -2.5668315936367674e-277 < y0 < 6.418500696234417e+26Initial program 24.8
Taylor expanded around inf 26.6
if 6.418500696234417e+26 < y0 Initial program 28.0
Taylor expanded around inf 29.1
Final simplification26.3
herbie shell --seed 2019156
(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"
: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)))))