\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}\;y1 \le -7.2484292437968247 \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(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right) \cdot \left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \left(y0 \cdot c - y1 \cdot a\right)\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(\left(\left(k \cdot y2 - j \cdot y3\right) \cdot y4\right) \cdot y1 + \left(y5 \cdot \left(j \cdot y3 - k \cdot y2\right)\right) \cdot y0\right)\\
\mathbf{elif}\;y1 \le -3.7890320354432455 \cdot 10^{-289}:\\
\;\;\;\;\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}\;y1 \le 4.017680650719793 \cdot 10^{-189}:\\
\;\;\;\;\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(a \cdot \left(y3 \cdot \left(y1 \cdot z\right)\right) - \left(y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\right) + a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right)\right)\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}\;y1 \le 3.9529212417780789 \cdot 10^{-81}:\\
\;\;\;\;\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}\;y1 \le 6.1912961672376383 \cdot 10^{100}:\\
\;\;\;\;\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(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right) \cdot \left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \left(y0 \cdot c - y1 \cdot a\right)\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)\\
\mathbf{elif}\;y1 \le 1.1133346085590215 \cdot 10^{105}:\\
\;\;\;\;\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}\;y1 \le 1.4955038703616583 \cdot 10^{105}:\\
\;\;\;\;\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(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right) \cdot \left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \left(y0 \cdot c - y1 \cdot a\right)\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)\\
\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(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right) \cdot \left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \left(y0 \cdot c - y1 \cdot a\right)\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - 0\right) + \left(\left(\left(k \cdot y2 - j \cdot y3\right) \cdot y4\right) \cdot y1 + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(-y5 \cdot y0\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 r647420 = x;
double r647421 = y;
double r647422 = r647420 * r647421;
double r647423 = z;
double r647424 = t;
double r647425 = r647423 * r647424;
double r647426 = r647422 - r647425;
double r647427 = a;
double r647428 = b;
double r647429 = r647427 * r647428;
double r647430 = c;
double r647431 = i;
double r647432 = r647430 * r647431;
double r647433 = r647429 - r647432;
double r647434 = r647426 * r647433;
double r647435 = j;
double r647436 = r647420 * r647435;
double r647437 = k;
double r647438 = r647423 * r647437;
double r647439 = r647436 - r647438;
double r647440 = y0;
double r647441 = r647440 * r647428;
double r647442 = y1;
double r647443 = r647442 * r647431;
double r647444 = r647441 - r647443;
double r647445 = r647439 * r647444;
double r647446 = r647434 - r647445;
double r647447 = y2;
double r647448 = r647420 * r647447;
double r647449 = y3;
double r647450 = r647423 * r647449;
double r647451 = r647448 - r647450;
double r647452 = r647440 * r647430;
double r647453 = r647442 * r647427;
double r647454 = r647452 - r647453;
double r647455 = r647451 * r647454;
double r647456 = r647446 + r647455;
double r647457 = r647424 * r647435;
double r647458 = r647421 * r647437;
double r647459 = r647457 - r647458;
double r647460 = y4;
double r647461 = r647460 * r647428;
double r647462 = y5;
double r647463 = r647462 * r647431;
double r647464 = r647461 - r647463;
double r647465 = r647459 * r647464;
double r647466 = r647456 + r647465;
double r647467 = r647424 * r647447;
double r647468 = r647421 * r647449;
double r647469 = r647467 - r647468;
double r647470 = r647460 * r647430;
double r647471 = r647462 * r647427;
double r647472 = r647470 - r647471;
double r647473 = r647469 * r647472;
double r647474 = r647466 - r647473;
double r647475 = r647437 * r647447;
double r647476 = r647435 * r647449;
double r647477 = r647475 - r647476;
double r647478 = r647460 * r647442;
double r647479 = r647462 * r647440;
double r647480 = r647478 - r647479;
double r647481 = r647477 * r647480;
double r647482 = r647474 + r647481;
return r647482;
}
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 r647483 = y1;
double r647484 = -7.248429243796825e-36;
bool r647485 = r647483 <= r647484;
double r647486 = x;
double r647487 = y;
double r647488 = r647486 * r647487;
double r647489 = z;
double r647490 = t;
double r647491 = r647489 * r647490;
double r647492 = r647488 - r647491;
double r647493 = a;
double r647494 = b;
double r647495 = r647493 * r647494;
double r647496 = c;
double r647497 = i;
double r647498 = r647496 * r647497;
double r647499 = r647495 - r647498;
double r647500 = r647492 * r647499;
double r647501 = j;
double r647502 = r647486 * r647501;
double r647503 = k;
double r647504 = r647489 * r647503;
double r647505 = r647502 - r647504;
double r647506 = y0;
double r647507 = r647506 * r647494;
double r647508 = r647483 * r647497;
double r647509 = r647507 - r647508;
double r647510 = r647505 * r647509;
double r647511 = r647500 - r647510;
double r647512 = y2;
double r647513 = r647486 * r647512;
double r647514 = y3;
double r647515 = r647489 * r647514;
double r647516 = r647513 - r647515;
double r647517 = cbrt(r647516);
double r647518 = r647517 * r647517;
double r647519 = r647506 * r647496;
double r647520 = r647483 * r647493;
double r647521 = r647519 - r647520;
double r647522 = r647517 * r647521;
double r647523 = r647518 * r647522;
double r647524 = r647511 + r647523;
double r647525 = r647490 * r647501;
double r647526 = r647487 * r647503;
double r647527 = r647525 - r647526;
double r647528 = y4;
double r647529 = r647528 * r647494;
double r647530 = y5;
double r647531 = r647530 * r647497;
double r647532 = r647529 - r647531;
double r647533 = r647527 * r647532;
double r647534 = r647524 + r647533;
double r647535 = r647490 * r647512;
double r647536 = r647487 * r647514;
double r647537 = r647535 - r647536;
double r647538 = r647528 * r647496;
double r647539 = r647530 * r647493;
double r647540 = r647538 - r647539;
double r647541 = r647537 * r647540;
double r647542 = r647534 - r647541;
double r647543 = r647503 * r647512;
double r647544 = r647501 * r647514;
double r647545 = r647543 - r647544;
double r647546 = r647545 * r647528;
double r647547 = r647546 * r647483;
double r647548 = r647544 - r647543;
double r647549 = r647530 * r647548;
double r647550 = r647549 * r647506;
double r647551 = r647547 + r647550;
double r647552 = r647542 + r647551;
double r647553 = -3.7890320354432455e-289;
bool r647554 = r647483 <= r647553;
double r647555 = r647489 * r647483;
double r647556 = r647497 * r647555;
double r647557 = r647503 * r647556;
double r647558 = r647483 * r647486;
double r647559 = r647501 * r647558;
double r647560 = r647497 * r647559;
double r647561 = r647503 * r647494;
double r647562 = r647489 * r647561;
double r647563 = r647506 * r647562;
double r647564 = r647560 + r647563;
double r647565 = r647557 - r647564;
double r647566 = r647500 - r647565;
double r647567 = r647516 * r647521;
double r647568 = r647566 + r647567;
double r647569 = r647568 + r647533;
double r647570 = r647569 - r647541;
double r647571 = r647528 * r647483;
double r647572 = r647530 * r647506;
double r647573 = r647571 - r647572;
double r647574 = r647545 * r647573;
double r647575 = r647570 + r647574;
double r647576 = 4.017680650719793e-189;
bool r647577 = r647483 <= r647576;
double r647578 = r647483 * r647489;
double r647579 = r647514 * r647578;
double r647580 = r647493 * r647579;
double r647581 = r647514 * r647496;
double r647582 = r647489 * r647581;
double r647583 = r647506 * r647582;
double r647584 = r647512 * r647483;
double r647585 = r647486 * r647584;
double r647586 = r647493 * r647585;
double r647587 = r647583 + r647586;
double r647588 = r647580 - r647587;
double r647589 = r647511 + r647588;
double r647590 = r647589 + r647533;
double r647591 = r647590 - r647541;
double r647592 = r647591 + r647574;
double r647593 = 3.952921241778079e-81;
bool r647594 = r647483 <= r647593;
double r647595 = r647511 + r647567;
double r647596 = r647595 + r647533;
double r647597 = r647596 - r647541;
double r647598 = r647501 * r647530;
double r647599 = r647514 * r647598;
double r647600 = r647506 * r647599;
double r647601 = r647503 * r647530;
double r647602 = r647512 * r647601;
double r647603 = r647506 * r647602;
double r647604 = r647501 * r647528;
double r647605 = r647514 * r647604;
double r647606 = r647483 * r647605;
double r647607 = r647603 + r647606;
double r647608 = r647600 - r647607;
double r647609 = r647597 + r647608;
double r647610 = 6.191296167237638e+100;
bool r647611 = r647483 <= r647610;
double r647612 = r647487 * r647530;
double r647613 = r647514 * r647612;
double r647614 = r647493 * r647613;
double r647615 = r647514 * r647538;
double r647616 = r647487 * r647615;
double r647617 = r647512 * r647490;
double r647618 = r647493 * r647617;
double r647619 = r647530 * r647618;
double r647620 = r647616 + r647619;
double r647621 = r647614 - r647620;
double r647622 = r647534 - r647621;
double r647623 = r647622 + r647574;
double r647624 = 1.1133346085590215e+105;
bool r647625 = r647483 <= r647624;
double r647626 = 1.4955038703616583e+105;
bool r647627 = r647483 <= r647626;
double r647628 = 0.0;
double r647629 = r647534 - r647628;
double r647630 = -r647572;
double r647631 = r647545 * r647630;
double r647632 = r647547 + r647631;
double r647633 = r647629 + r647632;
double r647634 = r647627 ? r647623 : r647633;
double r647635 = r647625 ? r647575 : r647634;
double r647636 = r647611 ? r647623 : r647635;
double r647637 = r647594 ? r647609 : r647636;
double r647638 = r647577 ? r647592 : r647637;
double r647639 = r647554 ? r647575 : r647638;
double r647640 = r647485 ? r647552 : r647639;
return r647640;
}




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.8 |
|---|---|
| Target | 30.5 |
| Herbie | 27.5 |
if y1 < -7.248429243796825e-36Initial program 28.3
rmApplied add-cube-cbrt28.5
Applied associate-*l*28.5
rmApplied sub-neg28.5
Applied distribute-lft-in28.5
rmApplied associate-*r*26.8
Taylor expanded around inf 27.9
Simplified26.5
if -7.248429243796825e-36 < y1 < -3.7890320354432455e-289 or 6.191296167237638e+100 < y1 < 1.1133346085590215e+105Initial program 26.2
Taylor expanded around inf 27.2
if -3.7890320354432455e-289 < y1 < 4.017680650719793e-189Initial program 26.2
Taylor expanded around inf 27.3
if 4.017680650719793e-189 < y1 < 3.952921241778079e-81Initial program 25.8
Taylor expanded around inf 29.1
if 3.952921241778079e-81 < y1 < 6.191296167237638e+100 or 1.1133346085590215e+105 < y1 < 1.4955038703616583e+105Initial program 22.5
rmApplied add-cube-cbrt22.7
Applied associate-*l*22.7
Taylor expanded around inf 24.9
if 1.4955038703616583e+105 < y1 Initial program 35.5
rmApplied add-cube-cbrt35.7
Applied associate-*l*35.7
rmApplied sub-neg35.7
Applied distribute-lft-in35.7
rmApplied associate-*r*32.2
Taylor expanded around 0 33.5
Final simplification27.5
herbie shell --seed 2020064
(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)))))