\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}\;b \le -4.059251109457473 \cdot 10^{-144}:\\
\;\;\;\;\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)\right) - \left(y0 \cdot \left(y2 \cdot \left(k \cdot y5\right)\right) + y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\right)\\
\mathbf{elif}\;b \le 1.4370545924555493 \cdot 10^{-134}:\\
\;\;\;\;\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{else}:\\
\;\;\;\;\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(a \cdot \left(y3 \cdot \left(y \cdot y5\right)\right) - \left(y \cdot \left(y3 \cdot \left(y4 \cdot c\right)\right) + y5 \cdot \left(a \cdot \left(y2 \cdot t\right)\right)\right)\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 r549119 = x;
double r549120 = y;
double r549121 = r549119 * r549120;
double r549122 = z;
double r549123 = t;
double r549124 = r549122 * r549123;
double r549125 = r549121 - r549124;
double r549126 = a;
double r549127 = b;
double r549128 = r549126 * r549127;
double r549129 = c;
double r549130 = i;
double r549131 = r549129 * r549130;
double r549132 = r549128 - r549131;
double r549133 = r549125 * r549132;
double r549134 = j;
double r549135 = r549119 * r549134;
double r549136 = k;
double r549137 = r549122 * r549136;
double r549138 = r549135 - r549137;
double r549139 = y0;
double r549140 = r549139 * r549127;
double r549141 = y1;
double r549142 = r549141 * r549130;
double r549143 = r549140 - r549142;
double r549144 = r549138 * r549143;
double r549145 = r549133 - r549144;
double r549146 = y2;
double r549147 = r549119 * r549146;
double r549148 = y3;
double r549149 = r549122 * r549148;
double r549150 = r549147 - r549149;
double r549151 = r549139 * r549129;
double r549152 = r549141 * r549126;
double r549153 = r549151 - r549152;
double r549154 = r549150 * r549153;
double r549155 = r549145 + r549154;
double r549156 = r549123 * r549134;
double r549157 = r549120 * r549136;
double r549158 = r549156 - r549157;
double r549159 = y4;
double r549160 = r549159 * r549127;
double r549161 = y5;
double r549162 = r549161 * r549130;
double r549163 = r549160 - r549162;
double r549164 = r549158 * r549163;
double r549165 = r549155 + r549164;
double r549166 = r549123 * r549146;
double r549167 = r549120 * r549148;
double r549168 = r549166 - r549167;
double r549169 = r549159 * r549129;
double r549170 = r549161 * r549126;
double r549171 = r549169 - r549170;
double r549172 = r549168 * r549171;
double r549173 = r549165 - r549172;
double r549174 = r549136 * r549146;
double r549175 = r549134 * r549148;
double r549176 = r549174 - r549175;
double r549177 = r549159 * r549141;
double r549178 = r549161 * r549139;
double r549179 = r549177 - r549178;
double r549180 = r549176 * r549179;
double r549181 = r549173 + r549180;
return r549181;
}
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 r549182 = b;
double r549183 = -4.059251109457473e-144;
bool r549184 = r549182 <= r549183;
double r549185 = x;
double r549186 = y;
double r549187 = r549185 * r549186;
double r549188 = z;
double r549189 = t;
double r549190 = r549188 * r549189;
double r549191 = r549187 - r549190;
double r549192 = a;
double r549193 = r549192 * r549182;
double r549194 = c;
double r549195 = i;
double r549196 = r549194 * r549195;
double r549197 = r549193 - r549196;
double r549198 = r549191 * r549197;
double r549199 = j;
double r549200 = r549185 * r549199;
double r549201 = k;
double r549202 = r549188 * r549201;
double r549203 = r549200 - r549202;
double r549204 = y0;
double r549205 = r549204 * r549182;
double r549206 = y1;
double r549207 = r549206 * r549195;
double r549208 = r549205 - r549207;
double r549209 = r549203 * r549208;
double r549210 = r549198 - r549209;
double r549211 = y2;
double r549212 = r549185 * r549211;
double r549213 = y3;
double r549214 = r549188 * r549213;
double r549215 = r549212 - r549214;
double r549216 = r549204 * r549194;
double r549217 = r549206 * r549192;
double r549218 = r549216 - r549217;
double r549219 = r549215 * r549218;
double r549220 = r549210 + r549219;
double r549221 = r549189 * r549199;
double r549222 = r549186 * r549201;
double r549223 = r549221 - r549222;
double r549224 = y4;
double r549225 = r549224 * r549182;
double r549226 = y5;
double r549227 = r549226 * r549195;
double r549228 = r549225 - r549227;
double r549229 = r549223 * r549228;
double r549230 = r549220 + r549229;
double r549231 = r549189 * r549211;
double r549232 = r549186 * r549213;
double r549233 = r549231 - r549232;
double r549234 = r549224 * r549194;
double r549235 = r549226 * r549192;
double r549236 = r549234 - r549235;
double r549237 = r549233 * r549236;
double r549238 = r549230 - r549237;
double r549239 = r549199 * r549226;
double r549240 = r549213 * r549239;
double r549241 = r549204 * r549240;
double r549242 = r549201 * r549226;
double r549243 = r549211 * r549242;
double r549244 = r549204 * r549243;
double r549245 = r549199 * r549224;
double r549246 = r549213 * r549245;
double r549247 = r549206 * r549246;
double r549248 = r549244 + r549247;
double r549249 = r549241 - r549248;
double r549250 = r549238 + r549249;
double r549251 = 1.4370545924555493e-134;
bool r549252 = r549182 <= r549251;
double r549253 = r549188 * r549206;
double r549254 = r549195 * r549253;
double r549255 = r549201 * r549254;
double r549256 = r549206 * r549185;
double r549257 = r549199 * r549256;
double r549258 = r549195 * r549257;
double r549259 = r549201 * r549182;
double r549260 = r549188 * r549259;
double r549261 = r549204 * r549260;
double r549262 = r549258 + r549261;
double r549263 = r549255 - r549262;
double r549264 = r549198 - r549263;
double r549265 = r549264 + r549219;
double r549266 = r549265 + r549229;
double r549267 = r549266 - r549237;
double r549268 = r549201 * r549211;
double r549269 = r549199 * r549213;
double r549270 = r549268 - r549269;
double r549271 = r549224 * r549206;
double r549272 = r549226 * r549204;
double r549273 = r549271 - r549272;
double r549274 = r549270 * r549273;
double r549275 = r549267 + r549274;
double r549276 = r549186 * r549226;
double r549277 = r549213 * r549276;
double r549278 = r549192 * r549277;
double r549279 = r549213 * r549234;
double r549280 = r549186 * r549279;
double r549281 = r549211 * r549189;
double r549282 = r549192 * r549281;
double r549283 = r549226 * r549282;
double r549284 = r549280 + r549283;
double r549285 = r549278 - r549284;
double r549286 = r549230 - r549285;
double r549287 = r549286 + r549274;
double r549288 = r549252 ? r549275 : r549287;
double r549289 = r549184 ? r549250 : r549288;
return r549289;
}




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 | 27.0 |
|---|---|
| Target | 30.4 |
| Herbie | 28.8 |
if b < -4.059251109457473e-144Initial program 26.2
Taylor expanded around inf 29.4
if -4.059251109457473e-144 < b < 1.4370545924555493e-134Initial program 27.4
Taylor expanded around inf 27.9
if 1.4370545924555493e-134 < b Initial program 27.4
Taylor expanded around inf 29.3
Final simplification28.8
herbie shell --seed 2020020
(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)))))