\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}\;y \le -3.068136913593689871171353580308452333931 \cdot 10^{57}:\\
\;\;\;\;\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) + 0\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}\;y \le \frac{254462235520565}{3.31961245510479436680992629095292892081 \cdot 10^{181}}:\\
\;\;\;\;\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{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(\sqrt[3]{\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)} \cdot \sqrt[3]{\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)}\right) \cdot \sqrt[3]{\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 r617607 = x;
double r617608 = y;
double r617609 = r617607 * r617608;
double r617610 = z;
double r617611 = t;
double r617612 = r617610 * r617611;
double r617613 = r617609 - r617612;
double r617614 = a;
double r617615 = b;
double r617616 = r617614 * r617615;
double r617617 = c;
double r617618 = i;
double r617619 = r617617 * r617618;
double r617620 = r617616 - r617619;
double r617621 = r617613 * r617620;
double r617622 = j;
double r617623 = r617607 * r617622;
double r617624 = k;
double r617625 = r617610 * r617624;
double r617626 = r617623 - r617625;
double r617627 = y0;
double r617628 = r617627 * r617615;
double r617629 = y1;
double r617630 = r617629 * r617618;
double r617631 = r617628 - r617630;
double r617632 = r617626 * r617631;
double r617633 = r617621 - r617632;
double r617634 = y2;
double r617635 = r617607 * r617634;
double r617636 = y3;
double r617637 = r617610 * r617636;
double r617638 = r617635 - r617637;
double r617639 = r617627 * r617617;
double r617640 = r617629 * r617614;
double r617641 = r617639 - r617640;
double r617642 = r617638 * r617641;
double r617643 = r617633 + r617642;
double r617644 = r617611 * r617622;
double r617645 = r617608 * r617624;
double r617646 = r617644 - r617645;
double r617647 = y4;
double r617648 = r617647 * r617615;
double r617649 = y5;
double r617650 = r617649 * r617618;
double r617651 = r617648 - r617650;
double r617652 = r617646 * r617651;
double r617653 = r617643 + r617652;
double r617654 = r617611 * r617634;
double r617655 = r617608 * r617636;
double r617656 = r617654 - r617655;
double r617657 = r617647 * r617617;
double r617658 = r617649 * r617614;
double r617659 = r617657 - r617658;
double r617660 = r617656 * r617659;
double r617661 = r617653 - r617660;
double r617662 = r617624 * r617634;
double r617663 = r617622 * r617636;
double r617664 = r617662 - r617663;
double r617665 = r617647 * r617629;
double r617666 = r617649 * r617627;
double r617667 = r617665 - r617666;
double r617668 = r617664 * r617667;
double r617669 = r617661 + r617668;
return r617669;
}
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 r617670 = y;
double r617671 = -3.06813691359369e+57;
bool r617672 = r617670 <= r617671;
double r617673 = x;
double r617674 = r617673 * r617670;
double r617675 = z;
double r617676 = t;
double r617677 = r617675 * r617676;
double r617678 = r617674 - r617677;
double r617679 = a;
double r617680 = b;
double r617681 = r617679 * r617680;
double r617682 = c;
double r617683 = i;
double r617684 = r617682 * r617683;
double r617685 = r617681 - r617684;
double r617686 = r617678 * r617685;
double r617687 = j;
double r617688 = r617673 * r617687;
double r617689 = k;
double r617690 = r617675 * r617689;
double r617691 = r617688 - r617690;
double r617692 = y0;
double r617693 = r617692 * r617680;
double r617694 = y1;
double r617695 = r617694 * r617683;
double r617696 = r617693 - r617695;
double r617697 = r617691 * r617696;
double r617698 = r617686 - r617697;
double r617699 = 0.0;
double r617700 = r617698 + r617699;
double r617701 = r617676 * r617687;
double r617702 = r617670 * r617689;
double r617703 = r617701 - r617702;
double r617704 = y4;
double r617705 = r617704 * r617680;
double r617706 = y5;
double r617707 = r617706 * r617683;
double r617708 = r617705 - r617707;
double r617709 = r617703 * r617708;
double r617710 = r617700 + r617709;
double r617711 = y2;
double r617712 = r617676 * r617711;
double r617713 = y3;
double r617714 = r617670 * r617713;
double r617715 = r617712 - r617714;
double r617716 = r617704 * r617682;
double r617717 = r617706 * r617679;
double r617718 = r617716 - r617717;
double r617719 = r617715 * r617718;
double r617720 = r617710 - r617719;
double r617721 = r617689 * r617711;
double r617722 = r617687 * r617713;
double r617723 = r617721 - r617722;
double r617724 = r617704 * r617694;
double r617725 = r617706 * r617692;
double r617726 = r617724 - r617725;
double r617727 = r617723 * r617726;
double r617728 = r617720 + r617727;
double r617729 = 254462235520565.0;
double r617730 = 3.3196124551047944e+181;
double r617731 = r617729 / r617730;
bool r617732 = r617670 <= r617731;
double r617733 = r617675 * r617682;
double r617734 = r617683 * r617733;
double r617735 = r617676 * r617734;
double r617736 = r617670 * r617673;
double r617737 = r617682 * r617736;
double r617738 = r617683 * r617737;
double r617739 = r617675 * r617680;
double r617740 = r617676 * r617739;
double r617741 = r617679 * r617740;
double r617742 = r617738 + r617741;
double r617743 = r617735 - r617742;
double r617744 = r617743 - r617697;
double r617745 = r617673 * r617711;
double r617746 = r617675 * r617713;
double r617747 = r617745 - r617746;
double r617748 = r617692 * r617682;
double r617749 = r617694 * r617679;
double r617750 = r617748 - r617749;
double r617751 = r617747 * r617750;
double r617752 = r617744 + r617751;
double r617753 = r617752 + r617709;
double r617754 = r617753 - r617719;
double r617755 = r617754 + r617727;
double r617756 = r617698 + r617751;
double r617757 = r617756 + r617709;
double r617758 = r617757 - r617719;
double r617759 = cbrt(r617727);
double r617760 = r617759 * r617759;
double r617761 = r617760 * r617759;
double r617762 = r617758 + r617761;
double r617763 = r617732 ? r617755 : r617762;
double r617764 = r617672 ? r617728 : r617763;
return r617764;
}




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.6 |
|---|---|
| Target | 30.9 |
| Herbie | 27.7 |
if y < -3.06813691359369e+57Initial program 29.7
Taylor expanded around 0 32.3
if -3.06813691359369e+57 < y < 7.665419953743729e-168Initial program 26.2
Taylor expanded around inf 27.6
if 7.665419953743729e-168 < y Initial program 26.1
rmApplied add-cube-cbrt26.2
Final simplification27.7
herbie shell --seed 2019303
(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.2062562319964813e60) (- (- (* (- (* 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.3646035052463169e-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.7189631240574946e-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.77962681403791987e-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)))))