\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}\;y5 \le -6.7159667034134052 \cdot 10^{-9}:\\
\;\;\;\;\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) + \mathsf{fma}\left(a, y3 \cdot \left(y1 \cdot z\right), -\mathsf{fma}\left(y0, z \cdot \left(y3 \cdot c\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{elif}\;y5 \le 1.13848822505884045 \cdot 10^{-219}:\\
\;\;\;\;\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(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;y5 \le 8.6448449157860781 \cdot 10^{-14}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \mathsf{fma}\left(k, i \cdot \left(z \cdot y1\right), -\mathsf{fma}\left(i, j \cdot \left(y1 \cdot x\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(\left(t \cdot y2 - y \cdot y3\right) \cdot \left(\sqrt[3]{y4 \cdot c - y5 \cdot a} \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right)\right) \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;y5 \le 9.057615930547528 \cdot 10^{55}:\\
\;\;\;\;\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(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;y5 \le 4.7545985175856366 \cdot 10^{191}:\\
\;\;\;\;\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(\left(t \cdot y2 - y \cdot y3\right) \cdot \left(\sqrt[3]{y4 \cdot c - y5 \cdot a} \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right)\right) \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\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(\sqrt[3]{\left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)} \cdot \sqrt[3]{\left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)}\right) \cdot \sqrt[3]{\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 r691980 = x;
double r691981 = y;
double r691982 = r691980 * r691981;
double r691983 = z;
double r691984 = t;
double r691985 = r691983 * r691984;
double r691986 = r691982 - r691985;
double r691987 = a;
double r691988 = b;
double r691989 = r691987 * r691988;
double r691990 = c;
double r691991 = i;
double r691992 = r691990 * r691991;
double r691993 = r691989 - r691992;
double r691994 = r691986 * r691993;
double r691995 = j;
double r691996 = r691980 * r691995;
double r691997 = k;
double r691998 = r691983 * r691997;
double r691999 = r691996 - r691998;
double r692000 = y0;
double r692001 = r692000 * r691988;
double r692002 = y1;
double r692003 = r692002 * r691991;
double r692004 = r692001 - r692003;
double r692005 = r691999 * r692004;
double r692006 = r691994 - r692005;
double r692007 = y2;
double r692008 = r691980 * r692007;
double r692009 = y3;
double r692010 = r691983 * r692009;
double r692011 = r692008 - r692010;
double r692012 = r692000 * r691990;
double r692013 = r692002 * r691987;
double r692014 = r692012 - r692013;
double r692015 = r692011 * r692014;
double r692016 = r692006 + r692015;
double r692017 = r691984 * r691995;
double r692018 = r691981 * r691997;
double r692019 = r692017 - r692018;
double r692020 = y4;
double r692021 = r692020 * r691988;
double r692022 = y5;
double r692023 = r692022 * r691991;
double r692024 = r692021 - r692023;
double r692025 = r692019 * r692024;
double r692026 = r692016 + r692025;
double r692027 = r691984 * r692007;
double r692028 = r691981 * r692009;
double r692029 = r692027 - r692028;
double r692030 = r692020 * r691990;
double r692031 = r692022 * r691987;
double r692032 = r692030 - r692031;
double r692033 = r692029 * r692032;
double r692034 = r692026 - r692033;
double r692035 = r691997 * r692007;
double r692036 = r691995 * r692009;
double r692037 = r692035 - r692036;
double r692038 = r692020 * r692002;
double r692039 = r692022 * r692000;
double r692040 = r692038 - r692039;
double r692041 = r692037 * r692040;
double r692042 = r692034 + r692041;
return r692042;
}
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 r692043 = y5;
double r692044 = -6.715966703413405e-09;
bool r692045 = r692043 <= r692044;
double r692046 = x;
double r692047 = y;
double r692048 = r692046 * r692047;
double r692049 = z;
double r692050 = t;
double r692051 = r692049 * r692050;
double r692052 = r692048 - r692051;
double r692053 = a;
double r692054 = b;
double r692055 = r692053 * r692054;
double r692056 = c;
double r692057 = i;
double r692058 = r692056 * r692057;
double r692059 = r692055 - r692058;
double r692060 = r692052 * r692059;
double r692061 = j;
double r692062 = r692046 * r692061;
double r692063 = k;
double r692064 = r692049 * r692063;
double r692065 = r692062 - r692064;
double r692066 = y0;
double r692067 = r692066 * r692054;
double r692068 = y1;
double r692069 = r692068 * r692057;
double r692070 = r692067 - r692069;
double r692071 = r692065 * r692070;
double r692072 = r692060 - r692071;
double r692073 = y3;
double r692074 = r692068 * r692049;
double r692075 = r692073 * r692074;
double r692076 = r692073 * r692056;
double r692077 = r692049 * r692076;
double r692078 = y2;
double r692079 = r692078 * r692068;
double r692080 = r692046 * r692079;
double r692081 = r692053 * r692080;
double r692082 = fma(r692066, r692077, r692081);
double r692083 = -r692082;
double r692084 = fma(r692053, r692075, r692083);
double r692085 = r692072 + r692084;
double r692086 = r692050 * r692061;
double r692087 = r692047 * r692063;
double r692088 = r692086 - r692087;
double r692089 = y4;
double r692090 = r692089 * r692054;
double r692091 = r692043 * r692057;
double r692092 = r692090 - r692091;
double r692093 = r692088 * r692092;
double r692094 = r692085 + r692093;
double r692095 = r692050 * r692078;
double r692096 = r692047 * r692073;
double r692097 = r692095 - r692096;
double r692098 = r692089 * r692056;
double r692099 = r692043 * r692053;
double r692100 = r692098 - r692099;
double r692101 = r692097 * r692100;
double r692102 = r692094 - r692101;
double r692103 = r692063 * r692078;
double r692104 = r692061 * r692073;
double r692105 = r692103 - r692104;
double r692106 = r692089 * r692068;
double r692107 = r692043 * r692066;
double r692108 = r692106 - r692107;
double r692109 = r692105 * r692108;
double r692110 = r692102 + r692109;
double r692111 = 1.1384882250588404e-219;
bool r692112 = r692043 <= r692111;
double r692113 = r692046 * r692078;
double r692114 = r692049 * r692073;
double r692115 = r692113 - r692114;
double r692116 = r692066 * r692056;
double r692117 = r692068 * r692053;
double r692118 = r692116 - r692117;
double r692119 = r692115 * r692118;
double r692120 = r692072 + r692119;
double r692121 = r692047 * r692043;
double r692122 = r692057 * r692121;
double r692123 = r692061 * r692043;
double r692124 = r692057 * r692123;
double r692125 = r692047 * r692054;
double r692126 = r692089 * r692125;
double r692127 = r692063 * r692126;
double r692128 = fma(r692050, r692124, r692127);
double r692129 = -r692128;
double r692130 = fma(r692063, r692122, r692129);
double r692131 = r692120 + r692130;
double r692132 = r692131 - r692101;
double r692133 = r692132 + r692109;
double r692134 = 8.644844915786078e-14;
bool r692135 = r692043 <= r692134;
double r692136 = r692049 * r692068;
double r692137 = r692057 * r692136;
double r692138 = r692068 * r692046;
double r692139 = r692061 * r692138;
double r692140 = r692063 * r692054;
double r692141 = r692049 * r692140;
double r692142 = r692066 * r692141;
double r692143 = fma(r692057, r692139, r692142);
double r692144 = -r692143;
double r692145 = fma(r692063, r692137, r692144);
double r692146 = r692060 - r692145;
double r692147 = r692146 + r692119;
double r692148 = r692147 + r692093;
double r692149 = cbrt(r692100);
double r692150 = r692149 * r692149;
double r692151 = r692097 * r692150;
double r692152 = r692151 * r692149;
double r692153 = r692148 - r692152;
double r692154 = r692153 + r692109;
double r692155 = 9.057615930547528e+55;
bool r692156 = r692043 <= r692155;
double r692157 = 4.7545985175856366e+191;
bool r692158 = r692043 <= r692157;
double r692159 = 0.0;
double r692160 = r692060 - r692159;
double r692161 = r692160 + r692119;
double r692162 = r692161 + r692093;
double r692163 = r692162 - r692152;
double r692164 = r692163 + r692109;
double r692165 = r692120 + r692093;
double r692166 = cbrt(r692101);
double r692167 = r692166 * r692166;
double r692168 = r692167 * r692166;
double r692169 = r692165 - r692168;
double r692170 = r692169 + r692109;
double r692171 = r692158 ? r692164 : r692170;
double r692172 = r692156 ? r692133 : r692171;
double r692173 = r692135 ? r692154 : r692172;
double r692174 = r692112 ? r692133 : r692173;
double r692175 = r692045 ? r692110 : r692174;
return r692175;
}




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
| Original | 26.9 |
|---|---|
| Target | 30.7 |
| Herbie | 29.2 |
if y5 < -6.715966703413405e-09Initial program 28.0
Taylor expanded around inf 31.9
Simplified31.9
if -6.715966703413405e-09 < y5 < 1.1384882250588404e-219 or 8.644844915786078e-14 < y5 < 9.057615930547528e+55Initial program 26.9
Taylor expanded around inf 28.0
Simplified28.0
if 1.1384882250588404e-219 < y5 < 8.644844915786078e-14Initial program 25.0
rmApplied add-cube-cbrt25.1
Applied associate-*r*25.1
Taylor expanded around inf 27.8
Simplified27.8
if 9.057615930547528e+55 < y5 < 4.7545985175856366e+191Initial program 26.2
rmApplied add-cube-cbrt26.2
Applied associate-*r*26.2
Taylor expanded around 0 31.6
if 4.7545985175856366e+191 < y5 Initial program 33.4
rmApplied add-cube-cbrt33.5
Final simplification29.2
herbie shell --seed 2020024 +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
: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)))))