\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 r137666 = x;
double r137667 = y;
double r137668 = r137666 * r137667;
double r137669 = z;
double r137670 = t;
double r137671 = r137669 * r137670;
double r137672 = r137668 - r137671;
double r137673 = a;
double r137674 = b;
double r137675 = r137673 * r137674;
double r137676 = c;
double r137677 = i;
double r137678 = r137676 * r137677;
double r137679 = r137675 - r137678;
double r137680 = r137672 * r137679;
double r137681 = j;
double r137682 = r137666 * r137681;
double r137683 = k;
double r137684 = r137669 * r137683;
double r137685 = r137682 - r137684;
double r137686 = y0;
double r137687 = r137686 * r137674;
double r137688 = y1;
double r137689 = r137688 * r137677;
double r137690 = r137687 - r137689;
double r137691 = r137685 * r137690;
double r137692 = r137680 - r137691;
double r137693 = y2;
double r137694 = r137666 * r137693;
double r137695 = y3;
double r137696 = r137669 * r137695;
double r137697 = r137694 - r137696;
double r137698 = r137686 * r137676;
double r137699 = r137688 * r137673;
double r137700 = r137698 - r137699;
double r137701 = r137697 * r137700;
double r137702 = r137692 + r137701;
double r137703 = r137670 * r137681;
double r137704 = r137667 * r137683;
double r137705 = r137703 - r137704;
double r137706 = y4;
double r137707 = r137706 * r137674;
double r137708 = y5;
double r137709 = r137708 * r137677;
double r137710 = r137707 - r137709;
double r137711 = r137705 * r137710;
double r137712 = r137702 + r137711;
double r137713 = r137670 * r137693;
double r137714 = r137667 * r137695;
double r137715 = r137713 - r137714;
double r137716 = r137706 * r137676;
double r137717 = r137708 * r137673;
double r137718 = r137716 - r137717;
double r137719 = r137715 * r137718;
double r137720 = r137712 - r137719;
double r137721 = r137683 * r137693;
double r137722 = r137681 * r137695;
double r137723 = r137721 - r137722;
double r137724 = r137706 * r137688;
double r137725 = r137708 * r137686;
double r137726 = r137724 - r137725;
double r137727 = r137723 * r137726;
double r137728 = r137720 + r137727;
return r137728;
}
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 r137729 = y4;
double r137730 = -5.789471165304904e-241;
bool r137731 = r137729 <= r137730;
double r137732 = x;
double r137733 = y;
double r137734 = r137732 * r137733;
double r137735 = z;
double r137736 = t;
double r137737 = r137735 * r137736;
double r137738 = r137734 - r137737;
double r137739 = a;
double r137740 = b;
double r137741 = r137739 * r137740;
double r137742 = c;
double r137743 = i;
double r137744 = r137742 * r137743;
double r137745 = r137741 - r137744;
double r137746 = r137738 * r137745;
double r137747 = k;
double r137748 = y1;
double r137749 = r137735 * r137748;
double r137750 = r137743 * r137749;
double r137751 = r137747 * r137750;
double r137752 = j;
double r137753 = r137748 * r137732;
double r137754 = r137752 * r137753;
double r137755 = r137743 * r137754;
double r137756 = y0;
double r137757 = r137747 * r137740;
double r137758 = r137735 * r137757;
double r137759 = r137756 * r137758;
double r137760 = r137755 + r137759;
double r137761 = r137751 - r137760;
double r137762 = r137746 - r137761;
double r137763 = y2;
double r137764 = r137732 * r137763;
double r137765 = y3;
double r137766 = r137735 * r137765;
double r137767 = r137764 - r137766;
double r137768 = r137756 * r137742;
double r137769 = r137748 * r137739;
double r137770 = r137768 - r137769;
double r137771 = r137767 * r137770;
double r137772 = r137762 + r137771;
double r137773 = r137736 * r137752;
double r137774 = r137733 * r137747;
double r137775 = r137773 - r137774;
double r137776 = r137729 * r137740;
double r137777 = y5;
double r137778 = r137777 * r137743;
double r137779 = r137776 - r137778;
double r137780 = r137775 * r137779;
double r137781 = r137772 + r137780;
double r137782 = r137736 * r137763;
double r137783 = r137733 * r137765;
double r137784 = r137782 - r137783;
double r137785 = r137729 * r137742;
double r137786 = r137777 * r137739;
double r137787 = r137785 - r137786;
double r137788 = r137784 * r137787;
double r137789 = r137781 - r137788;
double r137790 = r137747 * r137763;
double r137791 = r137752 * r137765;
double r137792 = r137790 - r137791;
double r137793 = r137729 * r137748;
double r137794 = r137777 * r137756;
double r137795 = r137793 - r137794;
double r137796 = r137792 * r137795;
double r137797 = r137789 + r137796;
double r137798 = 6.725193475524307e-133;
bool r137799 = r137729 <= r137798;
double r137800 = r137732 * r137752;
double r137801 = r137735 * r137747;
double r137802 = r137800 - r137801;
double r137803 = r137756 * r137740;
double r137804 = r137748 * r137743;
double r137805 = r137803 - r137804;
double r137806 = r137802 * r137805;
double r137807 = r137746 - r137806;
double r137808 = r137807 + r137771;
double r137809 = r137733 * r137777;
double r137810 = r137743 * r137809;
double r137811 = r137747 * r137810;
double r137812 = r137752 * r137777;
double r137813 = r137743 * r137812;
double r137814 = r137736 * r137813;
double r137815 = r137733 * r137740;
double r137816 = r137729 * r137815;
double r137817 = r137747 * r137816;
double r137818 = r137814 + r137817;
double r137819 = r137811 - r137818;
double r137820 = r137808 + r137819;
double r137821 = r137820 - r137788;
double r137822 = r137821 + r137796;
double r137823 = 1.0410960937213773e-36;
bool r137824 = r137729 <= r137823;
double r137825 = r137808 + r137780;
double r137826 = r137825 - r137788;
double r137827 = r137765 * r137812;
double r137828 = r137747 * r137777;
double r137829 = r137763 * r137828;
double r137830 = r137827 - r137829;
double r137831 = r137756 * r137830;
double r137832 = r137752 * r137729;
double r137833 = r137765 * r137832;
double r137834 = r137748 * r137833;
double r137835 = r137831 - r137834;
double r137836 = r137826 + r137835;
double r137837 = r137780 + r137807;
double r137838 = r137837 - r137788;
double r137839 = r137796 + r137838;
double r137840 = r137824 ? r137836 : r137839;
double r137841 = r137799 ? r137822 : r137840;
double r137842 = r137731 ? r137797 : r137841;
return r137842;
}



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
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
(+ (- (+ (+ (- (* (- (* 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)))))