\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 -1.2156124862150228 \cdot 10^{-174}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(b \cdot \left(\left(j \cdot t - y \cdot k\right) \cdot y4\right) + \left(-\left(j \cdot t - y \cdot k\right) \cdot i\right) \cdot y5\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(b \cdot a - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right)\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{elif}\;b \le 2.334135835101937 \cdot 10^{-213}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - t \cdot z\right) \cdot \left(b \cdot a - i \cdot c\right) - \left(i \cdot \left(\left(y1 \cdot k\right) \cdot z\right) - \left(k \cdot \left(\left(b \cdot y0\right) \cdot z\right) + i \cdot \left(j \cdot \left(y1 \cdot x\right)\right)\right)\right)\right) + \left(c \cdot y0 - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right)\right) + \left(\left(b \cdot y4\right) \cdot \left(j \cdot t - y \cdot k\right) + \left(-\left(j \cdot t - y \cdot k\right) \cdot i\right) \cdot y5\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right) + \left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;b \le 1.0173669078649319 \cdot 10^{-47}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(j \cdot t - y \cdot k\right) \cdot \left(b \cdot y4 - y5 \cdot i\right) + \left(\left(\left(y3 \cdot \left(z \cdot y1\right) - \left(x \cdot y2\right) \cdot y1\right) \cdot a - \left(\left(y3 \cdot y0\right) \cdot z\right) \cdot c\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(b \cdot a - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right)\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{elif}\;b \le 3.628464615810776 \cdot 10^{+62}:\\
\;\;\;\;\left(y3 \cdot \left(\left(y5 \cdot y0\right) \cdot j\right) - \left(\left(y2 \cdot \left(y5 \cdot y0\right)\right) \cdot k + y1 \cdot \left(\left(j \cdot y4\right) \cdot y3\right)\right)\right) + \left(\left(\left(\left(\sqrt[3]{b \cdot a - i \cdot c} \cdot \left(\left(x \cdot y - t \cdot z\right) \cdot \left(\sqrt[3]{b \cdot a - i \cdot c} \cdot \sqrt[3]{b \cdot a - i \cdot c}\right)\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(c \cdot y0 - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right)\right) + \left(j \cdot t - y \cdot k\right) \cdot \left(b \cdot y4 - y5 \cdot i\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(b \cdot \left(\left(j \cdot t - y \cdot k\right) \cdot y4\right) + \left(-\left(j \cdot t - y \cdot k\right) \cdot i\right) \cdot y5\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(b \cdot a - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right)\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\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 r41144328 = x;
double r41144329 = y;
double r41144330 = r41144328 * r41144329;
double r41144331 = z;
double r41144332 = t;
double r41144333 = r41144331 * r41144332;
double r41144334 = r41144330 - r41144333;
double r41144335 = a;
double r41144336 = b;
double r41144337 = r41144335 * r41144336;
double r41144338 = c;
double r41144339 = i;
double r41144340 = r41144338 * r41144339;
double r41144341 = r41144337 - r41144340;
double r41144342 = r41144334 * r41144341;
double r41144343 = j;
double r41144344 = r41144328 * r41144343;
double r41144345 = k;
double r41144346 = r41144331 * r41144345;
double r41144347 = r41144344 - r41144346;
double r41144348 = y0;
double r41144349 = r41144348 * r41144336;
double r41144350 = y1;
double r41144351 = r41144350 * r41144339;
double r41144352 = r41144349 - r41144351;
double r41144353 = r41144347 * r41144352;
double r41144354 = r41144342 - r41144353;
double r41144355 = y2;
double r41144356 = r41144328 * r41144355;
double r41144357 = y3;
double r41144358 = r41144331 * r41144357;
double r41144359 = r41144356 - r41144358;
double r41144360 = r41144348 * r41144338;
double r41144361 = r41144350 * r41144335;
double r41144362 = r41144360 - r41144361;
double r41144363 = r41144359 * r41144362;
double r41144364 = r41144354 + r41144363;
double r41144365 = r41144332 * r41144343;
double r41144366 = r41144329 * r41144345;
double r41144367 = r41144365 - r41144366;
double r41144368 = y4;
double r41144369 = r41144368 * r41144336;
double r41144370 = y5;
double r41144371 = r41144370 * r41144339;
double r41144372 = r41144369 - r41144371;
double r41144373 = r41144367 * r41144372;
double r41144374 = r41144364 + r41144373;
double r41144375 = r41144332 * r41144355;
double r41144376 = r41144329 * r41144357;
double r41144377 = r41144375 - r41144376;
double r41144378 = r41144368 * r41144338;
double r41144379 = r41144370 * r41144335;
double r41144380 = r41144378 - r41144379;
double r41144381 = r41144377 * r41144380;
double r41144382 = r41144374 - r41144381;
double r41144383 = r41144345 * r41144355;
double r41144384 = r41144343 * r41144357;
double r41144385 = r41144383 - r41144384;
double r41144386 = r41144368 * r41144350;
double r41144387 = r41144370 * r41144348;
double r41144388 = r41144386 - r41144387;
double r41144389 = r41144385 * r41144388;
double r41144390 = r41144382 + r41144389;
return r41144390;
}
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 r41144391 = b;
double r41144392 = -1.2156124862150228e-174;
bool r41144393 = r41144391 <= r41144392;
double r41144394 = y2;
double r41144395 = k;
double r41144396 = r41144394 * r41144395;
double r41144397 = j;
double r41144398 = y3;
double r41144399 = r41144397 * r41144398;
double r41144400 = r41144396 - r41144399;
double r41144401 = y4;
double r41144402 = y1;
double r41144403 = r41144401 * r41144402;
double r41144404 = y5;
double r41144405 = y0;
double r41144406 = r41144404 * r41144405;
double r41144407 = r41144403 - r41144406;
double r41144408 = r41144400 * r41144407;
double r41144409 = t;
double r41144410 = r41144397 * r41144409;
double r41144411 = y;
double r41144412 = r41144411 * r41144395;
double r41144413 = r41144410 - r41144412;
double r41144414 = r41144413 * r41144401;
double r41144415 = r41144391 * r41144414;
double r41144416 = i;
double r41144417 = r41144413 * r41144416;
double r41144418 = -r41144417;
double r41144419 = r41144418 * r41144404;
double r41144420 = r41144415 + r41144419;
double r41144421 = c;
double r41144422 = r41144421 * r41144405;
double r41144423 = a;
double r41144424 = r41144402 * r41144423;
double r41144425 = r41144422 - r41144424;
double r41144426 = x;
double r41144427 = r41144426 * r41144394;
double r41144428 = z;
double r41144429 = r41144428 * r41144398;
double r41144430 = r41144427 - r41144429;
double r41144431 = r41144425 * r41144430;
double r41144432 = r41144426 * r41144411;
double r41144433 = r41144409 * r41144428;
double r41144434 = r41144432 - r41144433;
double r41144435 = r41144391 * r41144423;
double r41144436 = r41144416 * r41144421;
double r41144437 = r41144435 - r41144436;
double r41144438 = r41144434 * r41144437;
double r41144439 = r41144426 * r41144397;
double r41144440 = r41144428 * r41144395;
double r41144441 = r41144439 - r41144440;
double r41144442 = r41144391 * r41144405;
double r41144443 = r41144416 * r41144402;
double r41144444 = r41144442 - r41144443;
double r41144445 = r41144441 * r41144444;
double r41144446 = r41144438 - r41144445;
double r41144447 = r41144431 + r41144446;
double r41144448 = r41144420 + r41144447;
double r41144449 = r41144401 * r41144421;
double r41144450 = r41144404 * r41144423;
double r41144451 = r41144449 - r41144450;
double r41144452 = r41144409 * r41144394;
double r41144453 = r41144411 * r41144398;
double r41144454 = r41144452 - r41144453;
double r41144455 = r41144451 * r41144454;
double r41144456 = r41144448 - r41144455;
double r41144457 = r41144408 + r41144456;
double r41144458 = 2.334135835101937e-213;
bool r41144459 = r41144391 <= r41144458;
double r41144460 = r41144402 * r41144395;
double r41144461 = r41144460 * r41144428;
double r41144462 = r41144416 * r41144461;
double r41144463 = r41144442 * r41144428;
double r41144464 = r41144395 * r41144463;
double r41144465 = r41144402 * r41144426;
double r41144466 = r41144397 * r41144465;
double r41144467 = r41144416 * r41144466;
double r41144468 = r41144464 + r41144467;
double r41144469 = r41144462 - r41144468;
double r41144470 = r41144438 - r41144469;
double r41144471 = r41144470 + r41144431;
double r41144472 = r41144391 * r41144401;
double r41144473 = r41144472 * r41144413;
double r41144474 = r41144473 + r41144419;
double r41144475 = r41144471 + r41144474;
double r41144476 = r41144475 - r41144455;
double r41144477 = r41144476 + r41144408;
double r41144478 = 1.0173669078649319e-47;
bool r41144479 = r41144391 <= r41144478;
double r41144480 = r41144404 * r41144416;
double r41144481 = r41144472 - r41144480;
double r41144482 = r41144413 * r41144481;
double r41144483 = r41144428 * r41144402;
double r41144484 = r41144398 * r41144483;
double r41144485 = r41144427 * r41144402;
double r41144486 = r41144484 - r41144485;
double r41144487 = r41144486 * r41144423;
double r41144488 = r41144398 * r41144405;
double r41144489 = r41144488 * r41144428;
double r41144490 = r41144489 * r41144421;
double r41144491 = r41144487 - r41144490;
double r41144492 = r41144491 + r41144446;
double r41144493 = r41144482 + r41144492;
double r41144494 = r41144493 - r41144455;
double r41144495 = r41144408 + r41144494;
double r41144496 = 3.628464615810776e+62;
bool r41144497 = r41144391 <= r41144496;
double r41144498 = r41144406 * r41144397;
double r41144499 = r41144398 * r41144498;
double r41144500 = r41144394 * r41144406;
double r41144501 = r41144500 * r41144395;
double r41144502 = r41144397 * r41144401;
double r41144503 = r41144502 * r41144398;
double r41144504 = r41144402 * r41144503;
double r41144505 = r41144501 + r41144504;
double r41144506 = r41144499 - r41144505;
double r41144507 = cbrt(r41144437);
double r41144508 = r41144507 * r41144507;
double r41144509 = r41144434 * r41144508;
double r41144510 = r41144507 * r41144509;
double r41144511 = r41144510 - r41144445;
double r41144512 = r41144511 + r41144431;
double r41144513 = r41144512 + r41144482;
double r41144514 = r41144513 - r41144455;
double r41144515 = r41144506 + r41144514;
double r41144516 = r41144497 ? r41144515 : r41144457;
double r41144517 = r41144479 ? r41144495 : r41144516;
double r41144518 = r41144459 ? r41144477 : r41144517;
double r41144519 = r41144393 ? r41144457 : r41144518;
return r41144519;
}




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.8 |
|---|---|
| Target | 29.3 |
| Herbie | 26.3 |
if b < -1.2156124862150228e-174 or 3.628464615810776e+62 < b Initial program 26.5
rmApplied sub-neg26.5
Applied distribute-rgt-in26.5
rmApplied distribute-rgt-neg-in26.5
Applied associate-*l*26.6
rmApplied *-commutative26.6
Applied associate-*l*25.6
if -1.2156124862150228e-174 < b < 2.334135835101937e-213Initial program 25.8
rmApplied sub-neg25.8
Applied distribute-rgt-in25.9
rmApplied distribute-rgt-neg-in25.9
Applied associate-*l*26.8
Taylor expanded around inf 27.3
if 2.334135835101937e-213 < b < 1.0173669078649319e-47Initial program 24.4
Taylor expanded around inf 27.1
Simplified26.9
if 1.0173669078649319e-47 < b < 3.628464615810776e+62Initial program 24.3
rmApplied add-cube-cbrt24.5
Applied associate-*r*24.5
Taylor expanded around inf 26.4
Final simplification26.3
herbie shell --seed 2019158
(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)))))