\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 -3.3506910298792809 \cdot 10^{-74}:\\
\;\;\;\;\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 -3.5201604887001222 \cdot 10^{-217}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(\sqrt[3]{x \cdot j - z \cdot k} \cdot \sqrt[3]{x \cdot j - z \cdot k}\right) \cdot \left(\sqrt[3]{x \cdot j - z \cdot k} \cdot \left(y0 \cdot b - y1 \cdot i\right)\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}\;y1 \le 3.584673582248427 \cdot 10^{-257}:\\
\;\;\;\;\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 2.29505183355715006 \cdot 10^{-221}:\\
\;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(i \cdot \left(z \cdot c\right)\right) - \left(i \cdot \left(c \cdot \left(y \cdot x\right)\right) + a \cdot \left(t \cdot \left(z \cdot b\right)\right)\right)\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)\\
\mathbf{elif}\;y1 \le 3.37474929350029324 \cdot 10^{98}:\\
\;\;\;\;\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{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(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)\\
\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 r663449 = x;
double r663450 = y;
double r663451 = r663449 * r663450;
double r663452 = z;
double r663453 = t;
double r663454 = r663452 * r663453;
double r663455 = r663451 - r663454;
double r663456 = a;
double r663457 = b;
double r663458 = r663456 * r663457;
double r663459 = c;
double r663460 = i;
double r663461 = r663459 * r663460;
double r663462 = r663458 - r663461;
double r663463 = r663455 * r663462;
double r663464 = j;
double r663465 = r663449 * r663464;
double r663466 = k;
double r663467 = r663452 * r663466;
double r663468 = r663465 - r663467;
double r663469 = y0;
double r663470 = r663469 * r663457;
double r663471 = y1;
double r663472 = r663471 * r663460;
double r663473 = r663470 - r663472;
double r663474 = r663468 * r663473;
double r663475 = r663463 - r663474;
double r663476 = y2;
double r663477 = r663449 * r663476;
double r663478 = y3;
double r663479 = r663452 * r663478;
double r663480 = r663477 - r663479;
double r663481 = r663469 * r663459;
double r663482 = r663471 * r663456;
double r663483 = r663481 - r663482;
double r663484 = r663480 * r663483;
double r663485 = r663475 + r663484;
double r663486 = r663453 * r663464;
double r663487 = r663450 * r663466;
double r663488 = r663486 - r663487;
double r663489 = y4;
double r663490 = r663489 * r663457;
double r663491 = y5;
double r663492 = r663491 * r663460;
double r663493 = r663490 - r663492;
double r663494 = r663488 * r663493;
double r663495 = r663485 + r663494;
double r663496 = r663453 * r663476;
double r663497 = r663450 * r663478;
double r663498 = r663496 - r663497;
double r663499 = r663489 * r663459;
double r663500 = r663491 * r663456;
double r663501 = r663499 - r663500;
double r663502 = r663498 * r663501;
double r663503 = r663495 - r663502;
double r663504 = r663466 * r663476;
double r663505 = r663464 * r663478;
double r663506 = r663504 - r663505;
double r663507 = r663489 * r663471;
double r663508 = r663491 * r663469;
double r663509 = r663507 - r663508;
double r663510 = r663506 * r663509;
double r663511 = r663503 + r663510;
return r663511;
}
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 r663512 = y1;
double r663513 = -3.350691029879281e-74;
bool r663514 = r663512 <= r663513;
double r663515 = x;
double r663516 = y;
double r663517 = r663515 * r663516;
double r663518 = z;
double r663519 = t;
double r663520 = r663518 * r663519;
double r663521 = r663517 - r663520;
double r663522 = a;
double r663523 = b;
double r663524 = r663522 * r663523;
double r663525 = c;
double r663526 = i;
double r663527 = r663525 * r663526;
double r663528 = r663524 - r663527;
double r663529 = r663521 * r663528;
double r663530 = j;
double r663531 = r663515 * r663530;
double r663532 = k;
double r663533 = r663518 * r663532;
double r663534 = r663531 - r663533;
double r663535 = y0;
double r663536 = r663535 * r663523;
double r663537 = r663512 * r663526;
double r663538 = r663536 - r663537;
double r663539 = r663534 * r663538;
double r663540 = r663529 - r663539;
double r663541 = y2;
double r663542 = r663515 * r663541;
double r663543 = y3;
double r663544 = r663518 * r663543;
double r663545 = r663542 - r663544;
double r663546 = r663535 * r663525;
double r663547 = r663512 * r663522;
double r663548 = r663546 - r663547;
double r663549 = r663545 * r663548;
double r663550 = r663540 + r663549;
double r663551 = r663519 * r663530;
double r663552 = r663516 * r663532;
double r663553 = r663551 - r663552;
double r663554 = y4;
double r663555 = r663554 * r663523;
double r663556 = y5;
double r663557 = r663556 * r663526;
double r663558 = r663555 - r663557;
double r663559 = r663553 * r663558;
double r663560 = r663550 + r663559;
double r663561 = r663519 * r663541;
double r663562 = r663516 * r663543;
double r663563 = r663561 - r663562;
double r663564 = r663554 * r663525;
double r663565 = r663556 * r663522;
double r663566 = r663564 - r663565;
double r663567 = r663563 * r663566;
double r663568 = r663560 - r663567;
double r663569 = r663530 * r663556;
double r663570 = r663543 * r663569;
double r663571 = r663535 * r663570;
double r663572 = r663532 * r663556;
double r663573 = r663541 * r663572;
double r663574 = r663535 * r663573;
double r663575 = r663530 * r663554;
double r663576 = r663543 * r663575;
double r663577 = r663512 * r663576;
double r663578 = r663574 + r663577;
double r663579 = r663571 - r663578;
double r663580 = r663568 + r663579;
double r663581 = -3.5201604887001222e-217;
bool r663582 = r663512 <= r663581;
double r663583 = cbrt(r663534);
double r663584 = r663583 * r663583;
double r663585 = r663583 * r663538;
double r663586 = r663584 * r663585;
double r663587 = r663529 - r663586;
double r663588 = r663587 + r663549;
double r663589 = r663516 * r663556;
double r663590 = r663526 * r663589;
double r663591 = r663532 * r663590;
double r663592 = r663526 * r663569;
double r663593 = r663519 * r663592;
double r663594 = r663516 * r663523;
double r663595 = r663554 * r663594;
double r663596 = r663532 * r663595;
double r663597 = r663593 + r663596;
double r663598 = r663591 - r663597;
double r663599 = r663588 + r663598;
double r663600 = r663599 - r663567;
double r663601 = r663532 * r663541;
double r663602 = r663530 * r663543;
double r663603 = r663601 - r663602;
double r663604 = r663554 * r663512;
double r663605 = r663556 * r663535;
double r663606 = r663604 - r663605;
double r663607 = r663603 * r663606;
double r663608 = r663600 + r663607;
double r663609 = 3.584673582248427e-257;
bool r663610 = r663512 <= r663609;
double r663611 = r663518 * r663512;
double r663612 = r663526 * r663611;
double r663613 = r663532 * r663612;
double r663614 = r663512 * r663515;
double r663615 = r663530 * r663614;
double r663616 = r663526 * r663615;
double r663617 = r663532 * r663523;
double r663618 = r663518 * r663617;
double r663619 = r663535 * r663618;
double r663620 = r663616 + r663619;
double r663621 = r663613 - r663620;
double r663622 = r663529 - r663621;
double r663623 = r663622 + r663549;
double r663624 = r663623 + r663559;
double r663625 = r663624 - r663567;
double r663626 = r663625 + r663607;
double r663627 = 2.29505183355715e-221;
bool r663628 = r663512 <= r663627;
double r663629 = r663518 * r663525;
double r663630 = r663526 * r663629;
double r663631 = r663519 * r663630;
double r663632 = r663516 * r663515;
double r663633 = r663525 * r663632;
double r663634 = r663526 * r663633;
double r663635 = r663518 * r663523;
double r663636 = r663519 * r663635;
double r663637 = r663522 * r663636;
double r663638 = r663634 + r663637;
double r663639 = r663631 - r663638;
double r663640 = r663639 - r663539;
double r663641 = r663640 + r663549;
double r663642 = r663641 + r663559;
double r663643 = r663642 - r663567;
double r663644 = r663643 + r663607;
double r663645 = 3.374749293500293e+98;
bool r663646 = r663512 <= r663645;
double r663647 = r663512 * r663518;
double r663648 = r663543 * r663647;
double r663649 = r663522 * r663648;
double r663650 = r663543 * r663525;
double r663651 = r663518 * r663650;
double r663652 = r663535 * r663651;
double r663653 = r663541 * r663512;
double r663654 = r663515 * r663653;
double r663655 = r663522 * r663654;
double r663656 = r663652 + r663655;
double r663657 = r663649 - r663656;
double r663658 = r663540 + r663657;
double r663659 = r663658 + r663559;
double r663660 = r663659 - r663567;
double r663661 = r663660 + r663607;
double r663662 = r663646 ? r663661 : r663580;
double r663663 = r663628 ? r663644 : r663662;
double r663664 = r663610 ? r663626 : r663663;
double r663665 = r663582 ? r663608 : r663664;
double r663666 = r663514 ? r663580 : r663665;
return r663666;
}




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.4 |
|---|---|
| Target | 30.6 |
| Herbie | 29.6 |
if y1 < -3.350691029879281e-74 or 3.374749293500293e+98 < y1 Initial program 29.9
Taylor expanded around inf 32.3
if -3.350691029879281e-74 < y1 < -3.5201604887001222e-217Initial program 26.7
rmApplied add-cube-cbrt26.8
Applied associate-*l*26.8
Taylor expanded around inf 29.7
if -3.5201604887001222e-217 < y1 < 3.584673582248427e-257Initial program 26.5
Taylor expanded around inf 28.1
if 3.584673582248427e-257 < y1 < 2.29505183355715e-221Initial program 26.0
Taylor expanded around inf 27.8
if 2.29505183355715e-221 < y1 < 3.374749293500293e+98Initial program 25.7
Taylor expanded around inf 27.5
Final simplification29.6
herbie shell --seed 2020036
(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)))))