Average Error: 27.1 → 29.6
Time: 38.9s
Precision: 64
\[\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}\;y3 \le -6.39988180048693598 \cdot 10^{-22}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - 0\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}\;y3 \le -3.12772033083591463 \cdot 10^{-204}:\\ \;\;\;\;\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(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)\\ \end{array}\]
\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}\;y3 \le -6.39988180048693598 \cdot 10^{-22}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - 0\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}\;y3 \le -3.12772033083591463 \cdot 10^{-204}:\\
\;\;\;\;\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(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)\\

\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 r198737 = x;
        double r198738 = y;
        double r198739 = r198737 * r198738;
        double r198740 = z;
        double r198741 = t;
        double r198742 = r198740 * r198741;
        double r198743 = r198739 - r198742;
        double r198744 = a;
        double r198745 = b;
        double r198746 = r198744 * r198745;
        double r198747 = c;
        double r198748 = i;
        double r198749 = r198747 * r198748;
        double r198750 = r198746 - r198749;
        double r198751 = r198743 * r198750;
        double r198752 = j;
        double r198753 = r198737 * r198752;
        double r198754 = k;
        double r198755 = r198740 * r198754;
        double r198756 = r198753 - r198755;
        double r198757 = y0;
        double r198758 = r198757 * r198745;
        double r198759 = y1;
        double r198760 = r198759 * r198748;
        double r198761 = r198758 - r198760;
        double r198762 = r198756 * r198761;
        double r198763 = r198751 - r198762;
        double r198764 = y2;
        double r198765 = r198737 * r198764;
        double r198766 = y3;
        double r198767 = r198740 * r198766;
        double r198768 = r198765 - r198767;
        double r198769 = r198757 * r198747;
        double r198770 = r198759 * r198744;
        double r198771 = r198769 - r198770;
        double r198772 = r198768 * r198771;
        double r198773 = r198763 + r198772;
        double r198774 = r198741 * r198752;
        double r198775 = r198738 * r198754;
        double r198776 = r198774 - r198775;
        double r198777 = y4;
        double r198778 = r198777 * r198745;
        double r198779 = y5;
        double r198780 = r198779 * r198748;
        double r198781 = r198778 - r198780;
        double r198782 = r198776 * r198781;
        double r198783 = r198773 + r198782;
        double r198784 = r198741 * r198764;
        double r198785 = r198738 * r198766;
        double r198786 = r198784 - r198785;
        double r198787 = r198777 * r198747;
        double r198788 = r198779 * r198744;
        double r198789 = r198787 - r198788;
        double r198790 = r198786 * r198789;
        double r198791 = r198783 - r198790;
        double r198792 = r198754 * r198764;
        double r198793 = r198752 * r198766;
        double r198794 = r198792 - r198793;
        double r198795 = r198777 * r198759;
        double r198796 = r198779 * r198757;
        double r198797 = r198795 - r198796;
        double r198798 = r198794 * r198797;
        double r198799 = r198791 + r198798;
        return r198799;
}

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 r198800 = y3;
        double r198801 = -6.399881800486936e-22;
        bool r198802 = r198800 <= r198801;
        double r198803 = x;
        double r198804 = y;
        double r198805 = r198803 * r198804;
        double r198806 = z;
        double r198807 = t;
        double r198808 = r198806 * r198807;
        double r198809 = r198805 - r198808;
        double r198810 = a;
        double r198811 = b;
        double r198812 = r198810 * r198811;
        double r198813 = c;
        double r198814 = i;
        double r198815 = r198813 * r198814;
        double r198816 = r198812 - r198815;
        double r198817 = r198809 * r198816;
        double r198818 = 0.0;
        double r198819 = r198817 - r198818;
        double r198820 = y2;
        double r198821 = r198803 * r198820;
        double r198822 = r198806 * r198800;
        double r198823 = r198821 - r198822;
        double r198824 = y0;
        double r198825 = r198824 * r198813;
        double r198826 = y1;
        double r198827 = r198826 * r198810;
        double r198828 = r198825 - r198827;
        double r198829 = r198823 * r198828;
        double r198830 = r198819 + r198829;
        double r198831 = j;
        double r198832 = r198807 * r198831;
        double r198833 = k;
        double r198834 = r198804 * r198833;
        double r198835 = r198832 - r198834;
        double r198836 = y4;
        double r198837 = r198836 * r198811;
        double r198838 = y5;
        double r198839 = r198838 * r198814;
        double r198840 = r198837 - r198839;
        double r198841 = r198835 * r198840;
        double r198842 = r198830 + r198841;
        double r198843 = r198807 * r198820;
        double r198844 = r198804 * r198800;
        double r198845 = r198843 - r198844;
        double r198846 = r198836 * r198813;
        double r198847 = r198838 * r198810;
        double r198848 = r198846 - r198847;
        double r198849 = r198845 * r198848;
        double r198850 = r198842 - r198849;
        double r198851 = r198833 * r198820;
        double r198852 = r198831 * r198800;
        double r198853 = r198851 - r198852;
        double r198854 = r198836 * r198826;
        double r198855 = r198838 * r198824;
        double r198856 = r198854 - r198855;
        double r198857 = r198853 * r198856;
        double r198858 = r198850 + r198857;
        double r198859 = -3.1277203308359146e-204;
        bool r198860 = r198800 <= r198859;
        double r198861 = r198803 * r198831;
        double r198862 = r198806 * r198833;
        double r198863 = r198861 - r198862;
        double r198864 = r198824 * r198811;
        double r198865 = r198826 * r198814;
        double r198866 = r198864 - r198865;
        double r198867 = r198863 * r198866;
        double r198868 = r198817 - r198867;
        double r198869 = r198826 * r198806;
        double r198870 = r198800 * r198869;
        double r198871 = r198810 * r198870;
        double r198872 = r198800 * r198813;
        double r198873 = r198806 * r198872;
        double r198874 = r198824 * r198873;
        double r198875 = r198820 * r198826;
        double r198876 = r198803 * r198875;
        double r198877 = r198810 * r198876;
        double r198878 = r198874 + r198877;
        double r198879 = r198871 - r198878;
        double r198880 = r198868 + r198879;
        double r198881 = r198880 + r198841;
        double r198882 = r198881 - r198849;
        double r198883 = r198882 + r198857;
        double r198884 = r198868 + r198829;
        double r198885 = r198884 + r198841;
        double r198886 = r198804 * r198838;
        double r198887 = r198800 * r198886;
        double r198888 = r198810 * r198887;
        double r198889 = r198800 * r198846;
        double r198890 = r198804 * r198889;
        double r198891 = r198820 * r198807;
        double r198892 = r198810 * r198891;
        double r198893 = r198838 * r198892;
        double r198894 = r198890 + r198893;
        double r198895 = r198888 - r198894;
        double r198896 = r198885 - r198895;
        double r198897 = r198896 + r198857;
        double r198898 = r198860 ? r198883 : r198897;
        double r198899 = r198802 ? r198858 : r198898;
        return r198899;
}

Error

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if y3 < -6.399881800486936e-22

    1. Initial program 27.8

      \[\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)\]
    2. Taylor expanded around 0 30.0

      \[\leadsto \left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \color{blue}{0}\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)\]

    if -6.399881800486936e-22 < y3 < -3.1277203308359146e-204

    1. Initial program 25.3

      \[\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)\]
    2. Taylor expanded around inf 27.8

      \[\leadsto \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) + \color{blue}{\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)\]

    if -3.1277203308359146e-204 < y3

    1. Initial program 27.5

      \[\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)\]
    2. Taylor expanded around inf 30.1

      \[\leadsto \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) - \color{blue}{\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)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification29.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;y3 \le -6.39988180048693598 \cdot 10^{-22}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - 0\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}\;y3 \le -3.12772033083591463 \cdot 10^{-204}:\\ \;\;\;\;\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(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)\\ \end{array}\]

Reproduce

herbie shell --seed 2020065 
(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)))))