\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}\;y1 \le -8.238329224497703 \cdot 10^{-127}:\\
\;\;\;\;\mathsf{fma}\left(\left(y4 \cdot y1 - y0 \cdot y5\right), \left(y2 \cdot k - y3 \cdot j\right), \left(\mathsf{fma}\left(\left(y4 \cdot b - i \cdot y5\right), \left(j \cdot t - k \cdot y\right), \left(\left(\mathsf{fma}\left(\left(c \cdot y0 - y1 \cdot a\right), \left(x \cdot y2 - z \cdot y3\right), \left(\left(\left(c \cdot i\right) \cdot z - \left(a \cdot b\right) \cdot z\right) \cdot t - \left(y \cdot c\right) \cdot \left(x \cdot i\right)\right)\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right) - \left(\left(-\left(t \cdot y2 - y \cdot y3\right)\right) \cdot \left(a \cdot y5\right) + \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c\right)\right)\right)\right)\right)\right)\\
\mathbf{elif}\;y1 \le -3.174857072476638 \cdot 10^{-171}:\\
\;\;\;\;\mathsf{fma}\left(\left(y4 \cdot y1 - y0 \cdot y5\right), \left(y2 \cdot k - y3 \cdot j\right), \left(\mathsf{fma}\left(\left(y4 \cdot b - i \cdot y5\right), \left(j \cdot t - k \cdot y\right), \left(\left(\mathsf{fma}\left(\left(c \cdot y0 - y1 \cdot a\right), \left(x \cdot y2 - z \cdot y3\right), \left(\left(\left(a \cdot b - c \cdot i\right) \cdot \left(\sqrt[3]{y \cdot x - t \cdot z} \cdot \sqrt[3]{y \cdot x - t \cdot z}\right)\right) \cdot \sqrt[3]{y \cdot x - t \cdot z}\right)\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right) - \left(\left(a \cdot y3\right) \cdot \left(y \cdot y5\right) - \mathsf{fma}\left(\left(a \cdot y2\right), \left(y5 \cdot t\right), \left(y \cdot \left(\left(y4 \cdot y3\right) \cdot c\right)\right)\right)\right)\right)\right)\right)\right)\\
\mathbf{elif}\;y1 \le -5.1689439809450124 \cdot 10^{-214}:\\
\;\;\;\;\mathsf{fma}\left(\left(y4 \cdot y1 - y0 \cdot y5\right), \left(y2 \cdot k - y3 \cdot j\right), \left(\mathsf{fma}\left(\left(y4 \cdot b - i \cdot y5\right), \left(j \cdot t - k \cdot y\right), \left(\left(\mathsf{fma}\left(\left(c \cdot y0 - y1 \cdot a\right), \left(x \cdot y2 - z \cdot y3\right), \left(\left(a \cdot b - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right)\right)\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right) - \left(\left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c\right) + \left(\left(y \cdot \left(a \cdot y3\right)\right) \cdot y5 - \left(\left(t \cdot y2\right) \cdot a\right) \cdot y5\right)\right)\right)\right)\right)\right)\\
\mathbf{elif}\;y1 \le 1.2790266003841863 \cdot 10^{-124}:\\
\;\;\;\;\mathsf{fma}\left(\left(y4 \cdot y1 - y0 \cdot y5\right), \left(y2 \cdot k - y3 \cdot j\right), \left(\mathsf{fma}\left(\left(y4 \cdot b - i \cdot y5\right), \left(j \cdot t - k \cdot y\right), \left(\left(\mathsf{fma}\left(\left(c \cdot y0 - y1 \cdot a\right), \left(x \cdot y2 - z \cdot y3\right), \left(\left(a \cdot b - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right)\right)\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right) - \left(\left(\left(t \cdot y2 - y \cdot y3\right) \cdot y4\right) \cdot c + \left(-\left(t \cdot y2 - y \cdot y3\right)\right) \cdot \left(a \cdot y5\right)\right)\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(y4 \cdot y1 - y0 \cdot y5\right), \left(y2 \cdot k - y3 \cdot j\right), \left(\mathsf{fma}\left(\left(y4 \cdot b - i \cdot y5\right), \left(j \cdot t - k \cdot y\right), \left(\left(\mathsf{fma}\left(\left(c \cdot y0 - y1 \cdot a\right), \left(x \cdot y2 - z \cdot y3\right), \left(\left(\left(a \cdot b - c \cdot i\right) \cdot \left(\sqrt[3]{y \cdot x - t \cdot z} \cdot \sqrt[3]{y \cdot x - t \cdot z}\right)\right) \cdot \left(\sqrt[3]{\sqrt[3]{y \cdot x - t \cdot z}} \cdot \sqrt[3]{\sqrt[3]{y \cdot x - t \cdot z} \cdot \sqrt[3]{y \cdot x - t \cdot z}}\right)\right)\right) - \left(b \cdot y0 - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - a \cdot y5\right)\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 r4430945 = x;
double r4430946 = y;
double r4430947 = r4430945 * r4430946;
double r4430948 = z;
double r4430949 = t;
double r4430950 = r4430948 * r4430949;
double r4430951 = r4430947 - r4430950;
double r4430952 = a;
double r4430953 = b;
double r4430954 = r4430952 * r4430953;
double r4430955 = c;
double r4430956 = i;
double r4430957 = r4430955 * r4430956;
double r4430958 = r4430954 - r4430957;
double r4430959 = r4430951 * r4430958;
double r4430960 = j;
double r4430961 = r4430945 * r4430960;
double r4430962 = k;
double r4430963 = r4430948 * r4430962;
double r4430964 = r4430961 - r4430963;
double r4430965 = y0;
double r4430966 = r4430965 * r4430953;
double r4430967 = y1;
double r4430968 = r4430967 * r4430956;
double r4430969 = r4430966 - r4430968;
double r4430970 = r4430964 * r4430969;
double r4430971 = r4430959 - r4430970;
double r4430972 = y2;
double r4430973 = r4430945 * r4430972;
double r4430974 = y3;
double r4430975 = r4430948 * r4430974;
double r4430976 = r4430973 - r4430975;
double r4430977 = r4430965 * r4430955;
double r4430978 = r4430967 * r4430952;
double r4430979 = r4430977 - r4430978;
double r4430980 = r4430976 * r4430979;
double r4430981 = r4430971 + r4430980;
double r4430982 = r4430949 * r4430960;
double r4430983 = r4430946 * r4430962;
double r4430984 = r4430982 - r4430983;
double r4430985 = y4;
double r4430986 = r4430985 * r4430953;
double r4430987 = y5;
double r4430988 = r4430987 * r4430956;
double r4430989 = r4430986 - r4430988;
double r4430990 = r4430984 * r4430989;
double r4430991 = r4430981 + r4430990;
double r4430992 = r4430949 * r4430972;
double r4430993 = r4430946 * r4430974;
double r4430994 = r4430992 - r4430993;
double r4430995 = r4430985 * r4430955;
double r4430996 = r4430987 * r4430952;
double r4430997 = r4430995 - r4430996;
double r4430998 = r4430994 * r4430997;
double r4430999 = r4430991 - r4430998;
double r4431000 = r4430962 * r4430972;
double r4431001 = r4430960 * r4430974;
double r4431002 = r4431000 - r4431001;
double r4431003 = r4430985 * r4430967;
double r4431004 = r4430987 * r4430965;
double r4431005 = r4431003 - r4431004;
double r4431006 = r4431002 * r4431005;
double r4431007 = r4430999 + r4431006;
return r4431007;
}
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 r4431008 = y1;
double r4431009 = -8.238329224497703e-127;
bool r4431010 = r4431008 <= r4431009;
double r4431011 = y4;
double r4431012 = r4431011 * r4431008;
double r4431013 = y0;
double r4431014 = y5;
double r4431015 = r4431013 * r4431014;
double r4431016 = r4431012 - r4431015;
double r4431017 = y2;
double r4431018 = k;
double r4431019 = r4431017 * r4431018;
double r4431020 = y3;
double r4431021 = j;
double r4431022 = r4431020 * r4431021;
double r4431023 = r4431019 - r4431022;
double r4431024 = b;
double r4431025 = r4431011 * r4431024;
double r4431026 = i;
double r4431027 = r4431026 * r4431014;
double r4431028 = r4431025 - r4431027;
double r4431029 = t;
double r4431030 = r4431021 * r4431029;
double r4431031 = y;
double r4431032 = r4431018 * r4431031;
double r4431033 = r4431030 - r4431032;
double r4431034 = c;
double r4431035 = r4431034 * r4431013;
double r4431036 = a;
double r4431037 = r4431008 * r4431036;
double r4431038 = r4431035 - r4431037;
double r4431039 = x;
double r4431040 = r4431039 * r4431017;
double r4431041 = z;
double r4431042 = r4431041 * r4431020;
double r4431043 = r4431040 - r4431042;
double r4431044 = r4431034 * r4431026;
double r4431045 = r4431044 * r4431041;
double r4431046 = r4431036 * r4431024;
double r4431047 = r4431046 * r4431041;
double r4431048 = r4431045 - r4431047;
double r4431049 = r4431048 * r4431029;
double r4431050 = r4431031 * r4431034;
double r4431051 = r4431039 * r4431026;
double r4431052 = r4431050 * r4431051;
double r4431053 = r4431049 - r4431052;
double r4431054 = fma(r4431038, r4431043, r4431053);
double r4431055 = r4431024 * r4431013;
double r4431056 = r4431008 * r4431026;
double r4431057 = r4431055 - r4431056;
double r4431058 = r4431021 * r4431039;
double r4431059 = r4431041 * r4431018;
double r4431060 = r4431058 - r4431059;
double r4431061 = r4431057 * r4431060;
double r4431062 = r4431054 - r4431061;
double r4431063 = r4431029 * r4431017;
double r4431064 = r4431031 * r4431020;
double r4431065 = r4431063 - r4431064;
double r4431066 = -r4431065;
double r4431067 = r4431036 * r4431014;
double r4431068 = r4431066 * r4431067;
double r4431069 = r4431011 * r4431034;
double r4431070 = r4431065 * r4431069;
double r4431071 = r4431068 + r4431070;
double r4431072 = r4431062 - r4431071;
double r4431073 = fma(r4431028, r4431033, r4431072);
double r4431074 = fma(r4431016, r4431023, r4431073);
double r4431075 = -3.174857072476638e-171;
bool r4431076 = r4431008 <= r4431075;
double r4431077 = r4431046 - r4431044;
double r4431078 = r4431031 * r4431039;
double r4431079 = r4431029 * r4431041;
double r4431080 = r4431078 - r4431079;
double r4431081 = cbrt(r4431080);
double r4431082 = r4431081 * r4431081;
double r4431083 = r4431077 * r4431082;
double r4431084 = r4431083 * r4431081;
double r4431085 = fma(r4431038, r4431043, r4431084);
double r4431086 = r4431085 - r4431061;
double r4431087 = r4431036 * r4431020;
double r4431088 = r4431031 * r4431014;
double r4431089 = r4431087 * r4431088;
double r4431090 = r4431036 * r4431017;
double r4431091 = r4431014 * r4431029;
double r4431092 = r4431011 * r4431020;
double r4431093 = r4431092 * r4431034;
double r4431094 = r4431031 * r4431093;
double r4431095 = fma(r4431090, r4431091, r4431094);
double r4431096 = r4431089 - r4431095;
double r4431097 = r4431086 - r4431096;
double r4431098 = fma(r4431028, r4431033, r4431097);
double r4431099 = fma(r4431016, r4431023, r4431098);
double r4431100 = -5.1689439809450124e-214;
bool r4431101 = r4431008 <= r4431100;
double r4431102 = r4431077 * r4431080;
double r4431103 = fma(r4431038, r4431043, r4431102);
double r4431104 = r4431103 - r4431061;
double r4431105 = r4431031 * r4431087;
double r4431106 = r4431105 * r4431014;
double r4431107 = r4431063 * r4431036;
double r4431108 = r4431107 * r4431014;
double r4431109 = r4431106 - r4431108;
double r4431110 = r4431070 + r4431109;
double r4431111 = r4431104 - r4431110;
double r4431112 = fma(r4431028, r4431033, r4431111);
double r4431113 = fma(r4431016, r4431023, r4431112);
double r4431114 = 1.2790266003841863e-124;
bool r4431115 = r4431008 <= r4431114;
double r4431116 = r4431065 * r4431011;
double r4431117 = r4431116 * r4431034;
double r4431118 = r4431117 + r4431068;
double r4431119 = r4431104 - r4431118;
double r4431120 = fma(r4431028, r4431033, r4431119);
double r4431121 = fma(r4431016, r4431023, r4431120);
double r4431122 = cbrt(r4431081);
double r4431123 = cbrt(r4431082);
double r4431124 = r4431122 * r4431123;
double r4431125 = r4431083 * r4431124;
double r4431126 = fma(r4431038, r4431043, r4431125);
double r4431127 = r4431126 - r4431061;
double r4431128 = r4431069 - r4431067;
double r4431129 = r4431065 * r4431128;
double r4431130 = r4431127 - r4431129;
double r4431131 = fma(r4431028, r4431033, r4431130);
double r4431132 = fma(r4431016, r4431023, r4431131);
double r4431133 = r4431115 ? r4431121 : r4431132;
double r4431134 = r4431101 ? r4431113 : r4431133;
double r4431135 = r4431076 ? r4431099 : r4431134;
double r4431136 = r4431010 ? r4431074 : r4431135;
return r4431136;
}



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
if y1 < -8.238329224497703e-127Initial program 26.3
Simplified26.2
rmApplied sub-neg26.2
Applied distribute-rgt-in26.3
Taylor expanded around inf 27.9
Simplified27.9
if -8.238329224497703e-127 < y1 < -3.174857072476638e-171Initial program 28.2
Simplified28.2
rmApplied add-cube-cbrt28.4
Applied associate-*r*28.4
Taylor expanded around inf 29.8
Simplified31.1
if -3.174857072476638e-171 < y1 < -5.1689439809450124e-214Initial program 24.1
Simplified24.1
rmApplied sub-neg24.1
Applied distribute-rgt-in24.2
Taylor expanded around inf 25.5
Simplified25.1
if -5.1689439809450124e-214 < y1 < 1.2790266003841863e-124Initial program 24.7
Simplified24.7
rmApplied sub-neg24.7
Applied distribute-rgt-in24.8
rmApplied associate-*l*25.0
if 1.2790266003841863e-124 < y1 Initial program 25.5
Simplified25.5
rmApplied add-cube-cbrt25.6
Applied associate-*r*25.6
rmApplied add-cube-cbrt25.6
Applied cbrt-prod25.6
Final simplification26.3
herbie shell --seed 2019133 +o rules:numerics
(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"
(+ (- (+ (+ (- (* (- (* 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)))))