\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.6136655075287989 \cdot 10^{-142}:\\
\;\;\;\;\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}\;y3 \le -4.81816913385106046 \cdot 10^{-224}:\\
\;\;\;\;\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(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}\;y3 \le -1.6540595938942003 \cdot 10^{-263}:\\
\;\;\;\;\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}\;y3 \le 8.53527146760082345 \cdot 10^{-262}:\\
\;\;\;\;\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) + 0\\
\mathbf{elif}\;y3 \le 4.187276528621237 \cdot 10^{-242}:\\
\;\;\;\;\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(\sqrt[3]{\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)} \cdot \sqrt[3]{\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)}\right) \cdot \sqrt[3]{\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)}\right) - 0\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;y3 \le 4.0396091635139083 \cdot 10^{-62}:\\
\;\;\;\;\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) + 0\\
\mathbf{elif}\;y3 \le 1.17768737819116734 \cdot 10^{86}:\\
\;\;\;\;\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)\\
\mathbf{elif}\;y3 \le 1.13811263110995083 \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) + 0\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{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(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 r557719 = x;
double r557720 = y;
double r557721 = r557719 * r557720;
double r557722 = z;
double r557723 = t;
double r557724 = r557722 * r557723;
double r557725 = r557721 - r557724;
double r557726 = a;
double r557727 = b;
double r557728 = r557726 * r557727;
double r557729 = c;
double r557730 = i;
double r557731 = r557729 * r557730;
double r557732 = r557728 - r557731;
double r557733 = r557725 * r557732;
double r557734 = j;
double r557735 = r557719 * r557734;
double r557736 = k;
double r557737 = r557722 * r557736;
double r557738 = r557735 - r557737;
double r557739 = y0;
double r557740 = r557739 * r557727;
double r557741 = y1;
double r557742 = r557741 * r557730;
double r557743 = r557740 - r557742;
double r557744 = r557738 * r557743;
double r557745 = r557733 - r557744;
double r557746 = y2;
double r557747 = r557719 * r557746;
double r557748 = y3;
double r557749 = r557722 * r557748;
double r557750 = r557747 - r557749;
double r557751 = r557739 * r557729;
double r557752 = r557741 * r557726;
double r557753 = r557751 - r557752;
double r557754 = r557750 * r557753;
double r557755 = r557745 + r557754;
double r557756 = r557723 * r557734;
double r557757 = r557720 * r557736;
double r557758 = r557756 - r557757;
double r557759 = y4;
double r557760 = r557759 * r557727;
double r557761 = y5;
double r557762 = r557761 * r557730;
double r557763 = r557760 - r557762;
double r557764 = r557758 * r557763;
double r557765 = r557755 + r557764;
double r557766 = r557723 * r557746;
double r557767 = r557720 * r557748;
double r557768 = r557766 - r557767;
double r557769 = r557759 * r557729;
double r557770 = r557761 * r557726;
double r557771 = r557769 - r557770;
double r557772 = r557768 * r557771;
double r557773 = r557765 - r557772;
double r557774 = r557736 * r557746;
double r557775 = r557734 * r557748;
double r557776 = r557774 - r557775;
double r557777 = r557759 * r557741;
double r557778 = r557761 * r557739;
double r557779 = r557777 - r557778;
double r557780 = r557776 * r557779;
double r557781 = r557773 + r557780;
return r557781;
}
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 r557782 = y3;
double r557783 = -6.613665507528799e-142;
bool r557784 = r557782 <= r557783;
double r557785 = t;
double r557786 = i;
double r557787 = z;
double r557788 = c;
double r557789 = r557787 * r557788;
double r557790 = r557786 * r557789;
double r557791 = r557785 * r557790;
double r557792 = y;
double r557793 = x;
double r557794 = r557792 * r557793;
double r557795 = r557788 * r557794;
double r557796 = r557786 * r557795;
double r557797 = a;
double r557798 = b;
double r557799 = r557787 * r557798;
double r557800 = r557785 * r557799;
double r557801 = r557797 * r557800;
double r557802 = r557796 + r557801;
double r557803 = r557791 - r557802;
double r557804 = j;
double r557805 = r557793 * r557804;
double r557806 = k;
double r557807 = r557787 * r557806;
double r557808 = r557805 - r557807;
double r557809 = y0;
double r557810 = r557809 * r557798;
double r557811 = y1;
double r557812 = r557811 * r557786;
double r557813 = r557810 - r557812;
double r557814 = r557808 * r557813;
double r557815 = r557803 - r557814;
double r557816 = y2;
double r557817 = r557793 * r557816;
double r557818 = r557787 * r557782;
double r557819 = r557817 - r557818;
double r557820 = r557809 * r557788;
double r557821 = r557811 * r557797;
double r557822 = r557820 - r557821;
double r557823 = r557819 * r557822;
double r557824 = r557815 + r557823;
double r557825 = r557785 * r557804;
double r557826 = r557792 * r557806;
double r557827 = r557825 - r557826;
double r557828 = y4;
double r557829 = r557828 * r557798;
double r557830 = y5;
double r557831 = r557830 * r557786;
double r557832 = r557829 - r557831;
double r557833 = r557827 * r557832;
double r557834 = r557824 + r557833;
double r557835 = r557785 * r557816;
double r557836 = r557792 * r557782;
double r557837 = r557835 - r557836;
double r557838 = r557828 * r557788;
double r557839 = r557830 * r557797;
double r557840 = r557838 - r557839;
double r557841 = r557837 * r557840;
double r557842 = r557834 - r557841;
double r557843 = r557806 * r557816;
double r557844 = r557804 * r557782;
double r557845 = r557843 - r557844;
double r557846 = r557828 * r557811;
double r557847 = r557830 * r557809;
double r557848 = r557846 - r557847;
double r557849 = r557845 * r557848;
double r557850 = r557842 + r557849;
double r557851 = -4.81816913385106e-224;
bool r557852 = r557782 <= r557851;
double r557853 = r557793 * r557792;
double r557854 = r557787 * r557785;
double r557855 = r557853 - r557854;
double r557856 = r557797 * r557798;
double r557857 = r557788 * r557786;
double r557858 = r557856 - r557857;
double r557859 = r557855 * r557858;
double r557860 = r557859 - r557814;
double r557861 = r557811 * r557787;
double r557862 = r557782 * r557861;
double r557863 = r557797 * r557862;
double r557864 = r557782 * r557788;
double r557865 = r557787 * r557864;
double r557866 = r557809 * r557865;
double r557867 = r557816 * r557811;
double r557868 = r557793 * r557867;
double r557869 = r557797 * r557868;
double r557870 = r557866 + r557869;
double r557871 = r557863 - r557870;
double r557872 = r557860 + r557871;
double r557873 = r557792 * r557830;
double r557874 = r557786 * r557873;
double r557875 = r557806 * r557874;
double r557876 = r557804 * r557830;
double r557877 = r557786 * r557876;
double r557878 = r557785 * r557877;
double r557879 = r557792 * r557798;
double r557880 = r557828 * r557879;
double r557881 = r557806 * r557880;
double r557882 = r557878 + r557881;
double r557883 = r557875 - r557882;
double r557884 = r557872 + r557883;
double r557885 = r557884 - r557841;
double r557886 = r557885 + r557849;
double r557887 = -1.6540595938942003e-263;
bool r557888 = r557782 <= r557887;
double r557889 = 8.535271467600823e-262;
bool r557890 = r557782 <= r557889;
double r557891 = r557860 + r557823;
double r557892 = r557891 + r557833;
double r557893 = r557892 - r557841;
double r557894 = 0.0;
double r557895 = r557893 + r557894;
double r557896 = 4.187276528621237e-242;
bool r557897 = r557782 <= r557896;
double r557898 = cbrt(r557833);
double r557899 = r557898 * r557898;
double r557900 = r557899 * r557898;
double r557901 = r557891 + r557900;
double r557902 = r557901 - r557894;
double r557903 = r557902 + r557849;
double r557904 = 4.039609163513908e-62;
bool r557905 = r557782 <= r557904;
double r557906 = 1.1776873781911673e+86;
bool r557907 = r557782 <= r557906;
double r557908 = r557782 * r557873;
double r557909 = r557797 * r557908;
double r557910 = r557782 * r557838;
double r557911 = r557792 * r557910;
double r557912 = r557816 * r557785;
double r557913 = r557797 * r557912;
double r557914 = r557830 * r557913;
double r557915 = r557911 + r557914;
double r557916 = r557909 - r557915;
double r557917 = r557892 - r557916;
double r557918 = r557917 + r557849;
double r557919 = 1.1381126311099508e+133;
bool r557920 = r557782 <= r557919;
double r557921 = r557860 + r557894;
double r557922 = r557921 + r557883;
double r557923 = r557922 - r557841;
double r557924 = r557923 + r557849;
double r557925 = r557891 + r557883;
double r557926 = r557925 - r557841;
double r557927 = r557782 * r557876;
double r557928 = r557809 * r557927;
double r557929 = r557806 * r557830;
double r557930 = r557816 * r557929;
double r557931 = r557809 * r557930;
double r557932 = r557804 * r557828;
double r557933 = r557782 * r557932;
double r557934 = r557811 * r557933;
double r557935 = r557931 + r557934;
double r557936 = r557928 - r557935;
double r557937 = r557926 + r557936;
double r557938 = r557920 ? r557924 : r557937;
double r557939 = r557907 ? r557918 : r557938;
double r557940 = r557905 ? r557895 : r557939;
double r557941 = r557897 ? r557903 : r557940;
double r557942 = r557890 ? r557895 : r557941;
double r557943 = r557888 ? r557850 : r557942;
double r557944 = r557852 ? r557886 : r557943;
double r557945 = r557784 ? r557850 : r557944;
return r557945;
}




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.9 |
|---|---|
| Target | 30.6 |
| Herbie | 29.7 |
if y3 < -6.613665507528799e-142 or -4.81816913385106e-224 < y3 < -1.6540595938942003e-263Initial program 27.1
Taylor expanded around inf 28.8
if -6.613665507528799e-142 < y3 < -4.81816913385106e-224Initial program 25.3
Taylor expanded around inf 30.1
Taylor expanded around inf 32.4
if -1.6540595938942003e-263 < y3 < 8.535271467600823e-262 or 4.187276528621237e-242 < y3 < 4.039609163513908e-62Initial program 26.9
Taylor expanded around 0 29.8
if 8.535271467600823e-262 < y3 < 4.187276528621237e-242Initial program 27.4
rmApplied add-cube-cbrt27.4
Taylor expanded around 0 31.5
if 4.039609163513908e-62 < y3 < 1.1776873781911673e+86Initial program 24.0
Taylor expanded around inf 26.3
if 1.1776873781911673e+86 < y3 < 1.1381126311099508e+133Initial program 26.5
Taylor expanded around inf 28.4
Taylor expanded around 0 34.9
if 1.1381126311099508e+133 < y3 Initial program 32.8
Taylor expanded around inf 32.0
Taylor expanded around inf 32.6
Final simplification29.7
herbie shell --seed 2020100
(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)))))