Average Error: 27.0 → 29.2
Time: 44.5s
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}\;y4 \le -1.141043199035872955793993253485594947058 \cdot 10^{-144} \lor \neg \left(y4 \le 1.505926449921851627263221841026874965439 \cdot 10^{-268} \lor \neg \left(y4 \le 1.10648180373074739350468598992557420036 \cdot 10^{-143}\right) \land y4 \le 9269207004634505703164194894905344\right):\\ \;\;\;\;\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{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(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)\\ \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}\;y4 \le -1.141043199035872955793993253485594947058 \cdot 10^{-144} \lor \neg \left(y4 \le 1.505926449921851627263221841026874965439 \cdot 10^{-268} \lor \neg \left(y4 \le 1.10648180373074739350468598992557420036 \cdot 10^{-143}\right) \land y4 \le 9269207004634505703164194894905344\right):\\
\;\;\;\;\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{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(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)\\

\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 r151646 = x;
        double r151647 = y;
        double r151648 = r151646 * r151647;
        double r151649 = z;
        double r151650 = t;
        double r151651 = r151649 * r151650;
        double r151652 = r151648 - r151651;
        double r151653 = a;
        double r151654 = b;
        double r151655 = r151653 * r151654;
        double r151656 = c;
        double r151657 = i;
        double r151658 = r151656 * r151657;
        double r151659 = r151655 - r151658;
        double r151660 = r151652 * r151659;
        double r151661 = j;
        double r151662 = r151646 * r151661;
        double r151663 = k;
        double r151664 = r151649 * r151663;
        double r151665 = r151662 - r151664;
        double r151666 = y0;
        double r151667 = r151666 * r151654;
        double r151668 = y1;
        double r151669 = r151668 * r151657;
        double r151670 = r151667 - r151669;
        double r151671 = r151665 * r151670;
        double r151672 = r151660 - r151671;
        double r151673 = y2;
        double r151674 = r151646 * r151673;
        double r151675 = y3;
        double r151676 = r151649 * r151675;
        double r151677 = r151674 - r151676;
        double r151678 = r151666 * r151656;
        double r151679 = r151668 * r151653;
        double r151680 = r151678 - r151679;
        double r151681 = r151677 * r151680;
        double r151682 = r151672 + r151681;
        double r151683 = r151650 * r151661;
        double r151684 = r151647 * r151663;
        double r151685 = r151683 - r151684;
        double r151686 = y4;
        double r151687 = r151686 * r151654;
        double r151688 = y5;
        double r151689 = r151688 * r151657;
        double r151690 = r151687 - r151689;
        double r151691 = r151685 * r151690;
        double r151692 = r151682 + r151691;
        double r151693 = r151650 * r151673;
        double r151694 = r151647 * r151675;
        double r151695 = r151693 - r151694;
        double r151696 = r151686 * r151656;
        double r151697 = r151688 * r151653;
        double r151698 = r151696 - r151697;
        double r151699 = r151695 * r151698;
        double r151700 = r151692 - r151699;
        double r151701 = r151663 * r151673;
        double r151702 = r151661 * r151675;
        double r151703 = r151701 - r151702;
        double r151704 = r151686 * r151668;
        double r151705 = r151688 * r151666;
        double r151706 = r151704 - r151705;
        double r151707 = r151703 * r151706;
        double r151708 = r151700 + r151707;
        return r151708;
}

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 r151709 = y4;
        double r151710 = -1.141043199035873e-144;
        bool r151711 = r151709 <= r151710;
        double r151712 = 1.5059264499218516e-268;
        bool r151713 = r151709 <= r151712;
        double r151714 = 1.1064818037307474e-143;
        bool r151715 = r151709 <= r151714;
        double r151716 = !r151715;
        double r151717 = 9.269207004634506e+33;
        bool r151718 = r151709 <= r151717;
        bool r151719 = r151716 && r151718;
        bool r151720 = r151713 || r151719;
        double r151721 = !r151720;
        bool r151722 = r151711 || r151721;
        double r151723 = x;
        double r151724 = y;
        double r151725 = r151723 * r151724;
        double r151726 = z;
        double r151727 = t;
        double r151728 = r151726 * r151727;
        double r151729 = r151725 - r151728;
        double r151730 = a;
        double r151731 = b;
        double r151732 = r151730 * r151731;
        double r151733 = c;
        double r151734 = i;
        double r151735 = r151733 * r151734;
        double r151736 = r151732 - r151735;
        double r151737 = r151729 * r151736;
        double r151738 = k;
        double r151739 = y1;
        double r151740 = r151726 * r151739;
        double r151741 = r151734 * r151740;
        double r151742 = r151738 * r151741;
        double r151743 = j;
        double r151744 = r151739 * r151723;
        double r151745 = r151743 * r151744;
        double r151746 = r151734 * r151745;
        double r151747 = y0;
        double r151748 = r151738 * r151731;
        double r151749 = r151726 * r151748;
        double r151750 = r151747 * r151749;
        double r151751 = r151746 + r151750;
        double r151752 = r151742 - r151751;
        double r151753 = r151737 - r151752;
        double r151754 = y2;
        double r151755 = r151723 * r151754;
        double r151756 = y3;
        double r151757 = r151726 * r151756;
        double r151758 = r151755 - r151757;
        double r151759 = r151747 * r151733;
        double r151760 = r151739 * r151730;
        double r151761 = r151759 - r151760;
        double r151762 = r151758 * r151761;
        double r151763 = r151753 + r151762;
        double r151764 = r151727 * r151743;
        double r151765 = r151724 * r151738;
        double r151766 = r151764 - r151765;
        double r151767 = r151709 * r151731;
        double r151768 = y5;
        double r151769 = r151768 * r151734;
        double r151770 = r151767 - r151769;
        double r151771 = r151766 * r151770;
        double r151772 = r151763 + r151771;
        double r151773 = r151727 * r151754;
        double r151774 = r151724 * r151756;
        double r151775 = r151773 - r151774;
        double r151776 = r151709 * r151733;
        double r151777 = r151768 * r151730;
        double r151778 = r151776 - r151777;
        double r151779 = r151775 * r151778;
        double r151780 = r151772 - r151779;
        double r151781 = r151738 * r151754;
        double r151782 = r151743 * r151756;
        double r151783 = r151781 - r151782;
        double r151784 = r151709 * r151739;
        double r151785 = r151768 * r151747;
        double r151786 = r151784 - r151785;
        double r151787 = r151783 * r151786;
        double r151788 = r151780 + r151787;
        double r151789 = r151723 * r151743;
        double r151790 = r151726 * r151738;
        double r151791 = r151789 - r151790;
        double r151792 = r151747 * r151731;
        double r151793 = r151739 * r151734;
        double r151794 = r151792 - r151793;
        double r151795 = r151791 * r151794;
        double r151796 = r151737 - r151795;
        double r151797 = r151796 + r151762;
        double r151798 = r151724 * r151768;
        double r151799 = r151734 * r151798;
        double r151800 = r151738 * r151799;
        double r151801 = r151743 * r151768;
        double r151802 = r151734 * r151801;
        double r151803 = r151727 * r151802;
        double r151804 = r151724 * r151731;
        double r151805 = r151709 * r151804;
        double r151806 = r151738 * r151805;
        double r151807 = r151803 + r151806;
        double r151808 = r151800 - r151807;
        double r151809 = r151797 + r151808;
        double r151810 = r151809 - r151779;
        double r151811 = r151810 + r151787;
        double r151812 = r151722 ? r151788 : r151811;
        return r151812;
}

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 2 regimes
  2. if y4 < -1.141043199035873e-144 or 1.5059264499218516e-268 < y4 < 1.1064818037307474e-143 or 9.269207004634506e+33 < y4

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

    if -1.141043199035873e-144 < y4 < 1.5059264499218516e-268 or 1.1064818037307474e-143 < y4 < 9.269207004634506e+33

    1. Initial program 25.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 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) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \color{blue}{\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)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification29.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;y4 \le -1.141043199035872955793993253485594947058 \cdot 10^{-144} \lor \neg \left(y4 \le 1.505926449921851627263221841026874965439 \cdot 10^{-268} \lor \neg \left(y4 \le 1.10648180373074739350468598992557420036 \cdot 10^{-143}\right) \land y4 \le 9269207004634505703164194894905344\right):\\ \;\;\;\;\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{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(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)\\ \end{array}\]

Reproduce

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