\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}\;i \le -8.16142792763455377 \cdot 10^{-106}:\\
\;\;\;\;\left(\left(\left(\left(\mathsf{fma}\left(t, i \cdot \left(z \cdot c\right), -\mathsf{fma}\left(i, c \cdot \left(y \cdot x\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}\;i \le 8.5743865824476068 \cdot 10^{-205}:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(\sqrt[3]{a \cdot b - c \cdot i} \cdot \sqrt[3]{a \cdot b - c \cdot i}\right)\right) \cdot \sqrt[3]{a \cdot b - c \cdot i} - \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]{t \cdot j - y \cdot k} \cdot \sqrt[3]{t \cdot j - y \cdot k}\right) \cdot \left(\sqrt[3]{t \cdot j - y \cdot k} \cdot \left(y4 \cdot b - y5 \cdot i\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}\;i \le 1.1859936470184728 \cdot 10^{-44}:\\
\;\;\;\;\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) + \mathsf{fma}\left(y0, y3 \cdot \left(j \cdot y5\right), -\mathsf{fma}\left(y0, y2 \cdot \left(k \cdot y5\right), y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\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) + \mathsf{fma}\left(k, i \cdot \left(y \cdot y5\right), -\mathsf{fma}\left(t, i \cdot \left(j \cdot y5\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(\left(k \cdot y2 - j \cdot y3\right) \cdot \left(\sqrt[3]{y4 \cdot y1 - y5 \cdot y0} \cdot \sqrt[3]{y4 \cdot y1 - y5 \cdot y0}\right)\right) \cdot \sqrt[3]{y4 \cdot y1 - y5 \cdot y0}\\
\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 r169965 = x;
double r169966 = y;
double r169967 = r169965 * r169966;
double r169968 = z;
double r169969 = t;
double r169970 = r169968 * r169969;
double r169971 = r169967 - r169970;
double r169972 = a;
double r169973 = b;
double r169974 = r169972 * r169973;
double r169975 = c;
double r169976 = i;
double r169977 = r169975 * r169976;
double r169978 = r169974 - r169977;
double r169979 = r169971 * r169978;
double r169980 = j;
double r169981 = r169965 * r169980;
double r169982 = k;
double r169983 = r169968 * r169982;
double r169984 = r169981 - r169983;
double r169985 = y0;
double r169986 = r169985 * r169973;
double r169987 = y1;
double r169988 = r169987 * r169976;
double r169989 = r169986 - r169988;
double r169990 = r169984 * r169989;
double r169991 = r169979 - r169990;
double r169992 = y2;
double r169993 = r169965 * r169992;
double r169994 = y3;
double r169995 = r169968 * r169994;
double r169996 = r169993 - r169995;
double r169997 = r169985 * r169975;
double r169998 = r169987 * r169972;
double r169999 = r169997 - r169998;
double r170000 = r169996 * r169999;
double r170001 = r169991 + r170000;
double r170002 = r169969 * r169980;
double r170003 = r169966 * r169982;
double r170004 = r170002 - r170003;
double r170005 = y4;
double r170006 = r170005 * r169973;
double r170007 = y5;
double r170008 = r170007 * r169976;
double r170009 = r170006 - r170008;
double r170010 = r170004 * r170009;
double r170011 = r170001 + r170010;
double r170012 = r169969 * r169992;
double r170013 = r169966 * r169994;
double r170014 = r170012 - r170013;
double r170015 = r170005 * r169975;
double r170016 = r170007 * r169972;
double r170017 = r170015 - r170016;
double r170018 = r170014 * r170017;
double r170019 = r170011 - r170018;
double r170020 = r169982 * r169992;
double r170021 = r169980 * r169994;
double r170022 = r170020 - r170021;
double r170023 = r170005 * r169987;
double r170024 = r170007 * r169985;
double r170025 = r170023 - r170024;
double r170026 = r170022 * r170025;
double r170027 = r170019 + r170026;
return r170027;
}
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 r170028 = i;
double r170029 = -8.161427927634554e-106;
bool r170030 = r170028 <= r170029;
double r170031 = t;
double r170032 = z;
double r170033 = c;
double r170034 = r170032 * r170033;
double r170035 = r170028 * r170034;
double r170036 = y;
double r170037 = x;
double r170038 = r170036 * r170037;
double r170039 = r170033 * r170038;
double r170040 = a;
double r170041 = b;
double r170042 = r170032 * r170041;
double r170043 = r170031 * r170042;
double r170044 = r170040 * r170043;
double r170045 = fma(r170028, r170039, r170044);
double r170046 = -r170045;
double r170047 = fma(r170031, r170035, r170046);
double r170048 = j;
double r170049 = r170037 * r170048;
double r170050 = k;
double r170051 = r170032 * r170050;
double r170052 = r170049 - r170051;
double r170053 = y0;
double r170054 = r170053 * r170041;
double r170055 = y1;
double r170056 = r170055 * r170028;
double r170057 = r170054 - r170056;
double r170058 = r170052 * r170057;
double r170059 = r170047 - r170058;
double r170060 = y2;
double r170061 = r170037 * r170060;
double r170062 = y3;
double r170063 = r170032 * r170062;
double r170064 = r170061 - r170063;
double r170065 = r170053 * r170033;
double r170066 = r170055 * r170040;
double r170067 = r170065 - r170066;
double r170068 = r170064 * r170067;
double r170069 = r170059 + r170068;
double r170070 = r170031 * r170048;
double r170071 = r170036 * r170050;
double r170072 = r170070 - r170071;
double r170073 = y4;
double r170074 = r170073 * r170041;
double r170075 = y5;
double r170076 = r170075 * r170028;
double r170077 = r170074 - r170076;
double r170078 = r170072 * r170077;
double r170079 = r170069 + r170078;
double r170080 = r170031 * r170060;
double r170081 = r170036 * r170062;
double r170082 = r170080 - r170081;
double r170083 = r170073 * r170033;
double r170084 = r170075 * r170040;
double r170085 = r170083 - r170084;
double r170086 = r170082 * r170085;
double r170087 = r170079 - r170086;
double r170088 = r170050 * r170060;
double r170089 = r170048 * r170062;
double r170090 = r170088 - r170089;
double r170091 = r170073 * r170055;
double r170092 = r170075 * r170053;
double r170093 = r170091 - r170092;
double r170094 = r170090 * r170093;
double r170095 = r170087 + r170094;
double r170096 = 8.574386582447607e-205;
bool r170097 = r170028 <= r170096;
double r170098 = r170037 * r170036;
double r170099 = r170032 * r170031;
double r170100 = r170098 - r170099;
double r170101 = r170040 * r170041;
double r170102 = r170033 * r170028;
double r170103 = r170101 - r170102;
double r170104 = cbrt(r170103);
double r170105 = r170104 * r170104;
double r170106 = r170100 * r170105;
double r170107 = r170106 * r170104;
double r170108 = r170107 - r170058;
double r170109 = r170108 + r170068;
double r170110 = cbrt(r170072);
double r170111 = r170110 * r170110;
double r170112 = r170110 * r170077;
double r170113 = r170111 * r170112;
double r170114 = r170109 + r170113;
double r170115 = r170114 - r170086;
double r170116 = r170115 + r170094;
double r170117 = 1.1859936470184728e-44;
bool r170118 = r170028 <= r170117;
double r170119 = r170100 * r170103;
double r170120 = r170119 - r170058;
double r170121 = r170120 + r170068;
double r170122 = r170121 + r170078;
double r170123 = r170122 - r170086;
double r170124 = r170048 * r170075;
double r170125 = r170062 * r170124;
double r170126 = r170050 * r170075;
double r170127 = r170060 * r170126;
double r170128 = r170048 * r170073;
double r170129 = r170062 * r170128;
double r170130 = r170055 * r170129;
double r170131 = fma(r170053, r170127, r170130);
double r170132 = -r170131;
double r170133 = fma(r170053, r170125, r170132);
double r170134 = r170123 + r170133;
double r170135 = r170036 * r170075;
double r170136 = r170028 * r170135;
double r170137 = r170028 * r170124;
double r170138 = r170036 * r170041;
double r170139 = r170073 * r170138;
double r170140 = r170050 * r170139;
double r170141 = fma(r170031, r170137, r170140);
double r170142 = -r170141;
double r170143 = fma(r170050, r170136, r170142);
double r170144 = r170121 + r170143;
double r170145 = r170144 - r170086;
double r170146 = cbrt(r170093);
double r170147 = r170146 * r170146;
double r170148 = r170090 * r170147;
double r170149 = r170148 * r170146;
double r170150 = r170145 + r170149;
double r170151 = r170118 ? r170134 : r170150;
double r170152 = r170097 ? r170116 : r170151;
double r170153 = r170030 ? r170095 : r170152;
return r170153;
}



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 i < -8.161427927634554e-106Initial program 27.0
Taylor expanded around inf 28.2
Simplified28.2
if -8.161427927634554e-106 < i < 8.574386582447607e-205Initial program 27.3
rmApplied add-cube-cbrt27.4
Applied associate-*r*27.4
rmApplied add-cube-cbrt27.5
Applied associate-*l*27.5
if 8.574386582447607e-205 < i < 1.1859936470184728e-44Initial program 25.6
Taylor expanded around inf 28.8
Simplified28.8
if 1.1859936470184728e-44 < i Initial program 27.9
rmApplied add-cube-cbrt28.0
Applied associate-*r*28.0
Taylor expanded around inf 29.8
Simplified29.8
Final simplification28.4
herbie shell --seed 2020089 +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"
: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)))))