\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 r739276 = x;
double r739277 = y;
double r739278 = r739276 * r739277;
double r739279 = z;
double r739280 = t;
double r739281 = r739279 * r739280;
double r739282 = r739278 - r739281;
double r739283 = a;
double r739284 = b;
double r739285 = r739283 * r739284;
double r739286 = c;
double r739287 = i;
double r739288 = r739286 * r739287;
double r739289 = r739285 - r739288;
double r739290 = r739282 * r739289;
double r739291 = j;
double r739292 = r739276 * r739291;
double r739293 = k;
double r739294 = r739279 * r739293;
double r739295 = r739292 - r739294;
double r739296 = y0;
double r739297 = r739296 * r739284;
double r739298 = y1;
double r739299 = r739298 * r739287;
double r739300 = r739297 - r739299;
double r739301 = r739295 * r739300;
double r739302 = r739290 - r739301;
double r739303 = y2;
double r739304 = r739276 * r739303;
double r739305 = y3;
double r739306 = r739279 * r739305;
double r739307 = r739304 - r739306;
double r739308 = r739296 * r739286;
double r739309 = r739298 * r739283;
double r739310 = r739308 - r739309;
double r739311 = r739307 * r739310;
double r739312 = r739302 + r739311;
double r739313 = r739280 * r739291;
double r739314 = r739277 * r739293;
double r739315 = r739313 - r739314;
double r739316 = y4;
double r739317 = r739316 * r739284;
double r739318 = y5;
double r739319 = r739318 * r739287;
double r739320 = r739317 - r739319;
double r739321 = r739315 * r739320;
double r739322 = r739312 + r739321;
double r739323 = r739280 * r739303;
double r739324 = r739277 * r739305;
double r739325 = r739323 - r739324;
double r739326 = r739316 * r739286;
double r739327 = r739318 * r739283;
double r739328 = r739326 - r739327;
double r739329 = r739325 * r739328;
double r739330 = r739322 - r739329;
double r739331 = r739293 * r739303;
double r739332 = r739291 * r739305;
double r739333 = r739331 - r739332;
double r739334 = r739316 * r739298;
double r739335 = r739318 * r739296;
double r739336 = r739334 - r739335;
double r739337 = r739333 * r739336;
double r739338 = r739330 + r739337;
return r739338;
}
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 r739339 = y4;
double r739340 = -5.789471165304904e-241;
bool r739341 = r739339 <= r739340;
double r739342 = x;
double r739343 = y;
double r739344 = r739342 * r739343;
double r739345 = z;
double r739346 = t;
double r739347 = r739345 * r739346;
double r739348 = r739344 - r739347;
double r739349 = a;
double r739350 = b;
double r739351 = r739349 * r739350;
double r739352 = c;
double r739353 = i;
double r739354 = r739352 * r739353;
double r739355 = r739351 - r739354;
double r739356 = r739348 * r739355;
double r739357 = k;
double r739358 = y1;
double r739359 = r739345 * r739358;
double r739360 = r739353 * r739359;
double r739361 = r739357 * r739360;
double r739362 = j;
double r739363 = r739358 * r739342;
double r739364 = r739362 * r739363;
double r739365 = r739353 * r739364;
double r739366 = y0;
double r739367 = r739357 * r739350;
double r739368 = r739345 * r739367;
double r739369 = r739366 * r739368;
double r739370 = r739365 + r739369;
double r739371 = r739361 - r739370;
double r739372 = r739356 - r739371;
double r739373 = y2;
double r739374 = r739342 * r739373;
double r739375 = y3;
double r739376 = r739345 * r739375;
double r739377 = r739374 - r739376;
double r739378 = r739366 * r739352;
double r739379 = r739358 * r739349;
double r739380 = r739378 - r739379;
double r739381 = r739377 * r739380;
double r739382 = r739372 + r739381;
double r739383 = r739346 * r739362;
double r739384 = r739343 * r739357;
double r739385 = r739383 - r739384;
double r739386 = r739339 * r739350;
double r739387 = y5;
double r739388 = r739387 * r739353;
double r739389 = r739386 - r739388;
double r739390 = r739385 * r739389;
double r739391 = r739382 + r739390;
double r739392 = r739346 * r739373;
double r739393 = r739343 * r739375;
double r739394 = r739392 - r739393;
double r739395 = r739339 * r739352;
double r739396 = r739387 * r739349;
double r739397 = r739395 - r739396;
double r739398 = r739394 * r739397;
double r739399 = r739391 - r739398;
double r739400 = r739357 * r739373;
double r739401 = r739362 * r739375;
double r739402 = r739400 - r739401;
double r739403 = r739339 * r739358;
double r739404 = r739387 * r739366;
double r739405 = r739403 - r739404;
double r739406 = r739402 * r739405;
double r739407 = r739399 + r739406;
double r739408 = 6.725193475524307e-133;
bool r739409 = r739339 <= r739408;
double r739410 = r739342 * r739362;
double r739411 = r739345 * r739357;
double r739412 = r739410 - r739411;
double r739413 = r739366 * r739350;
double r739414 = r739358 * r739353;
double r739415 = r739413 - r739414;
double r739416 = r739412 * r739415;
double r739417 = r739356 - r739416;
double r739418 = r739417 + r739381;
double r739419 = r739343 * r739387;
double r739420 = r739353 * r739419;
double r739421 = r739357 * r739420;
double r739422 = r739362 * r739387;
double r739423 = r739353 * r739422;
double r739424 = r739346 * r739423;
double r739425 = r739343 * r739350;
double r739426 = r739339 * r739425;
double r739427 = r739357 * r739426;
double r739428 = r739424 + r739427;
double r739429 = r739421 - r739428;
double r739430 = r739418 + r739429;
double r739431 = r739430 - r739398;
double r739432 = r739431 + r739406;
double r739433 = 1.0410960937213773e-36;
bool r739434 = r739339 <= r739433;
double r739435 = r739418 + r739390;
double r739436 = r739435 - r739398;
double r739437 = r739375 * r739422;
double r739438 = r739357 * r739387;
double r739439 = r739373 * r739438;
double r739440 = r739437 - r739439;
double r739441 = r739366 * r739440;
double r739442 = r739362 * r739339;
double r739443 = r739375 * r739442;
double r739444 = r739358 * r739443;
double r739445 = r739441 - r739444;
double r739446 = r739436 + r739445;
double r739447 = r739390 + r739417;
double r739448 = r739447 - r739398;
double r739449 = r739406 + r739448;
double r739450 = r739434 ? r739446 : r739449;
double r739451 = r739409 ? r739432 : r739450;
double r739452 = r739341 ? r739407 : r739451;
return r739452;
}




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.9 |
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
: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)))))