\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 -1.309758891052280498716406810077311773099 \cdot 10^{-9}:\\
\;\;\;\;\left(y1 \cdot y4 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right) + \left(\left(\left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right) + \left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right)\right) - \left(c \cdot y4 - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{elif}\;y1 \le -1.578588831053438660238860509236106750755 \cdot 10^{-193}:\\
\;\;\;\;\left(y1 \cdot y4 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right) + \left(\left(\left(y4 \cdot b - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right) - \left(c \cdot y4 - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{elif}\;y1 \le 3.319955438300563917284092647669219756099 \cdot 10^{-126}:\\
\;\;\;\;\left(\left(\left(y4 \cdot b - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right) + \left(\sqrt[3]{\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right)} \cdot \left(\sqrt[3]{\left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right) \cdot \left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \left(y0 \cdot c - y1 \cdot a\right)\right)} \cdot \sqrt[3]{\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right)}\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right)\right) - \left(c \cdot y4 - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right) + \left(y1 \cdot y4 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right)\\
\mathbf{elif}\;y1 \le 4.231148877918220037242745768127360946852 \cdot 10^{163}:\\
\;\;\;\;\left(y1 \cdot y4 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right) + \left(\left(\left(\left(a \cdot \left(z \cdot \left(y3 \cdot y1\right) - y2 \cdot \left(x \cdot y1\right)\right) - \left(\left(y0 \cdot y3\right) \cdot c\right) \cdot z\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right) + \left(y4 \cdot b - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right)\right) - \left(c \cdot y4 - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{elif}\;y1 \le 4.364516569456702147005841421481251072076 \cdot 10^{217}:\\
\;\;\;\;\left(y1 \cdot y4 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right) + \left(\left(\left(y4 \cdot b - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right) + \left(\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - z \cdot y3\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(i \cdot \left(z \cdot \left(y1 \cdot k\right)\right) - \left(k \cdot \left(z \cdot \left(y0 \cdot b\right)\right) + i \cdot \left(\left(x \cdot y1\right) \cdot j\right)\right)\right)\right)\right)\right) - \left(c \cdot y4 - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y1 \cdot y4 - y0 \cdot y5\right) \cdot \left(k \cdot y2 - y3 \cdot j\right) + \left(\left(\left(\left(a \cdot \left(z \cdot \left(y3 \cdot y1\right) - y2 \cdot \left(x \cdot y1\right)\right) - \left(\left(y0 \cdot y3\right) \cdot c\right) \cdot z\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right) + \left(y4 \cdot b - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right)\right) - \left(c \cdot y4 - y5 \cdot a\right) \cdot \left(t \cdot y2 - y \cdot y3\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 r31067009 = x;
double r31067010 = y;
double r31067011 = r31067009 * r31067010;
double r31067012 = z;
double r31067013 = t;
double r31067014 = r31067012 * r31067013;
double r31067015 = r31067011 - r31067014;
double r31067016 = a;
double r31067017 = b;
double r31067018 = r31067016 * r31067017;
double r31067019 = c;
double r31067020 = i;
double r31067021 = r31067019 * r31067020;
double r31067022 = r31067018 - r31067021;
double r31067023 = r31067015 * r31067022;
double r31067024 = j;
double r31067025 = r31067009 * r31067024;
double r31067026 = k;
double r31067027 = r31067012 * r31067026;
double r31067028 = r31067025 - r31067027;
double r31067029 = y0;
double r31067030 = r31067029 * r31067017;
double r31067031 = y1;
double r31067032 = r31067031 * r31067020;
double r31067033 = r31067030 - r31067032;
double r31067034 = r31067028 * r31067033;
double r31067035 = r31067023 - r31067034;
double r31067036 = y2;
double r31067037 = r31067009 * r31067036;
double r31067038 = y3;
double r31067039 = r31067012 * r31067038;
double r31067040 = r31067037 - r31067039;
double r31067041 = r31067029 * r31067019;
double r31067042 = r31067031 * r31067016;
double r31067043 = r31067041 - r31067042;
double r31067044 = r31067040 * r31067043;
double r31067045 = r31067035 + r31067044;
double r31067046 = r31067013 * r31067024;
double r31067047 = r31067010 * r31067026;
double r31067048 = r31067046 - r31067047;
double r31067049 = y4;
double r31067050 = r31067049 * r31067017;
double r31067051 = y5;
double r31067052 = r31067051 * r31067020;
double r31067053 = r31067050 - r31067052;
double r31067054 = r31067048 * r31067053;
double r31067055 = r31067045 + r31067054;
double r31067056 = r31067013 * r31067036;
double r31067057 = r31067010 * r31067038;
double r31067058 = r31067056 - r31067057;
double r31067059 = r31067049 * r31067019;
double r31067060 = r31067051 * r31067016;
double r31067061 = r31067059 - r31067060;
double r31067062 = r31067058 * r31067061;
double r31067063 = r31067055 - r31067062;
double r31067064 = r31067026 * r31067036;
double r31067065 = r31067024 * r31067038;
double r31067066 = r31067064 - r31067065;
double r31067067 = r31067049 * r31067031;
double r31067068 = r31067051 * r31067029;
double r31067069 = r31067067 - r31067068;
double r31067070 = r31067066 * r31067069;
double r31067071 = r31067063 + r31067070;
return r31067071;
}
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 r31067072 = y1;
double r31067073 = -1.3097588910522805e-09;
bool r31067074 = r31067072 <= r31067073;
double r31067075 = y4;
double r31067076 = r31067072 * r31067075;
double r31067077 = y0;
double r31067078 = y5;
double r31067079 = r31067077 * r31067078;
double r31067080 = r31067076 - r31067079;
double r31067081 = k;
double r31067082 = y2;
double r31067083 = r31067081 * r31067082;
double r31067084 = y3;
double r31067085 = j;
double r31067086 = r31067084 * r31067085;
double r31067087 = r31067083 - r31067086;
double r31067088 = r31067080 * r31067087;
double r31067089 = x;
double r31067090 = y;
double r31067091 = r31067089 * r31067090;
double r31067092 = t;
double r31067093 = z;
double r31067094 = r31067092 * r31067093;
double r31067095 = r31067091 - r31067094;
double r31067096 = a;
double r31067097 = b;
double r31067098 = r31067096 * r31067097;
double r31067099 = i;
double r31067100 = c;
double r31067101 = r31067099 * r31067100;
double r31067102 = r31067098 - r31067101;
double r31067103 = r31067095 * r31067102;
double r31067104 = r31067077 * r31067097;
double r31067105 = r31067072 * r31067099;
double r31067106 = r31067104 - r31067105;
double r31067107 = r31067089 * r31067085;
double r31067108 = r31067093 * r31067081;
double r31067109 = r31067107 - r31067108;
double r31067110 = r31067106 * r31067109;
double r31067111 = r31067103 - r31067110;
double r31067112 = r31067077 * r31067100;
double r31067113 = r31067072 * r31067096;
double r31067114 = r31067112 - r31067113;
double r31067115 = r31067089 * r31067082;
double r31067116 = r31067093 * r31067084;
double r31067117 = r31067115 - r31067116;
double r31067118 = r31067114 * r31067117;
double r31067119 = r31067111 + r31067118;
double r31067120 = r31067100 * r31067075;
double r31067121 = r31067078 * r31067096;
double r31067122 = r31067120 - r31067121;
double r31067123 = r31067092 * r31067082;
double r31067124 = r31067090 * r31067084;
double r31067125 = r31067123 - r31067124;
double r31067126 = r31067122 * r31067125;
double r31067127 = r31067119 - r31067126;
double r31067128 = r31067088 + r31067127;
double r31067129 = -1.5785888310534387e-193;
bool r31067130 = r31067072 <= r31067129;
double r31067131 = r31067075 * r31067097;
double r31067132 = r31067078 * r31067099;
double r31067133 = r31067131 - r31067132;
double r31067134 = r31067092 * r31067085;
double r31067135 = r31067090 * r31067081;
double r31067136 = r31067134 - r31067135;
double r31067137 = r31067133 * r31067136;
double r31067138 = r31067137 + r31067111;
double r31067139 = r31067138 - r31067126;
double r31067140 = r31067088 + r31067139;
double r31067141 = 3.319955438300564e-126;
bool r31067142 = r31067072 <= r31067141;
double r31067143 = cbrt(r31067118);
double r31067144 = cbrt(r31067117);
double r31067145 = r31067144 * r31067144;
double r31067146 = r31067144 * r31067114;
double r31067147 = r31067145 * r31067146;
double r31067148 = cbrt(r31067147);
double r31067149 = r31067148 * r31067143;
double r31067150 = r31067143 * r31067149;
double r31067151 = r31067150 + r31067111;
double r31067152 = r31067137 + r31067151;
double r31067153 = r31067152 - r31067126;
double r31067154 = r31067153 + r31067088;
double r31067155 = 4.23114887791822e+163;
bool r31067156 = r31067072 <= r31067155;
double r31067157 = r31067084 * r31067072;
double r31067158 = r31067093 * r31067157;
double r31067159 = r31067089 * r31067072;
double r31067160 = r31067082 * r31067159;
double r31067161 = r31067158 - r31067160;
double r31067162 = r31067096 * r31067161;
double r31067163 = r31067077 * r31067084;
double r31067164 = r31067163 * r31067100;
double r31067165 = r31067164 * r31067093;
double r31067166 = r31067162 - r31067165;
double r31067167 = r31067166 + r31067111;
double r31067168 = r31067167 + r31067137;
double r31067169 = r31067168 - r31067126;
double r31067170 = r31067088 + r31067169;
double r31067171 = 4.364516569456702e+217;
bool r31067172 = r31067072 <= r31067171;
double r31067173 = r31067072 * r31067081;
double r31067174 = r31067093 * r31067173;
double r31067175 = r31067099 * r31067174;
double r31067176 = r31067093 * r31067104;
double r31067177 = r31067081 * r31067176;
double r31067178 = r31067159 * r31067085;
double r31067179 = r31067099 * r31067178;
double r31067180 = r31067177 + r31067179;
double r31067181 = r31067175 - r31067180;
double r31067182 = r31067103 - r31067181;
double r31067183 = r31067118 + r31067182;
double r31067184 = r31067137 + r31067183;
double r31067185 = r31067184 - r31067126;
double r31067186 = r31067088 + r31067185;
double r31067187 = r31067172 ? r31067186 : r31067170;
double r31067188 = r31067156 ? r31067170 : r31067187;
double r31067189 = r31067142 ? r31067154 : r31067188;
double r31067190 = r31067130 ? r31067140 : r31067189;
double r31067191 = r31067074 ? r31067128 : r31067190;
return r31067191;
}




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 | 27.1 |
|---|---|
| Target | 30.7 |
| Herbie | 29.9 |
if y1 < -1.3097588910522805e-09Initial program 28.8
Taylor expanded around 0 31.5
if -1.3097588910522805e-09 < y1 < -1.5785888310534387e-193Initial program 25.1
Taylor expanded around 0 30.4
if -1.5785888310534387e-193 < y1 < 3.319955438300564e-126Initial program 26.9
rmApplied add-cube-cbrt27.0
rmApplied add-cube-cbrt27.0
Applied associate-*l*27.0
if 3.319955438300564e-126 < y1 < 4.23114887791822e+163 or 4.364516569456702e+217 < y1 Initial program 26.7
Taylor expanded around inf 30.9
Simplified30.8
if 4.23114887791822e+163 < y1 < 4.364516569456702e+217Initial program 34.5
Taylor expanded around inf 42.6
Final simplification29.9
herbie shell --seed 2019172
(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"
: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.0 (- (* 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)))))