\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}\;b \le -7.138489777882016084893148102256369076376 \cdot 10^{-31}:\\
\;\;\;\;\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y0 \cdot y5\right) + \left(\left(\left(b \cdot y4 - i \cdot y5\right) \cdot \left(j \cdot t - y \cdot k\right) + \left(\left(\left(x \cdot y - t \cdot z\right) \cdot \left(b \cdot a - i \cdot c\right) - \left(\left(\sqrt[3]{b \cdot y0 - i \cdot y1} \cdot \sqrt[3]{b \cdot y0 - i \cdot y1}\right) \cdot \left(x \cdot j - z \cdot k\right)\right) \cdot \sqrt[3]{b \cdot y0 - i \cdot y1}\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - y1 \cdot a\right)\right)\right) - \left(y2 \cdot t - y \cdot y3\right) \cdot \left(c \cdot y4 - y5 \cdot a\right)\right)\\
\mathbf{elif}\;b \le 7.748151508253240774379859426326506011482 \cdot 10^{-166}:\\
\;\;\;\;\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y0 \cdot y5\right) + \left(\left(\left(\left(y \cdot \left(y5 \cdot k\right)\right) \cdot i - \left(t \cdot \left(i \cdot \left(y5 \cdot j\right)\right) + k \cdot \left(y \cdot \left(b \cdot y4\right)\right)\right)\right) + \left(\left(\left(x \cdot y - t \cdot z\right) \cdot \left(b \cdot a - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - y1 \cdot a\right)\right)\right) - \left(y2 \cdot t - y \cdot y3\right) \cdot \left(c \cdot y4 - y5 \cdot a\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y0 \cdot y5\right) + \left(\left(\left(b \cdot y4 - i \cdot y5\right) \cdot \left(j \cdot t - y \cdot k\right) + \left(\left(\left(x \cdot y - t \cdot z\right) \cdot \left(b \cdot a - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(\sqrt[3]{x \cdot y2 - z \cdot y3} \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right) \cdot \left(\left(c \cdot y0 - y1 \cdot a\right) \cdot \sqrt[3]{x \cdot y2 - z \cdot y3}\right)\right)\right) - \left(y2 \cdot t - y \cdot y3\right) \cdot \left(c \cdot y4 - y5 \cdot a\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 r32907047 = x;
double r32907048 = y;
double r32907049 = r32907047 * r32907048;
double r32907050 = z;
double r32907051 = t;
double r32907052 = r32907050 * r32907051;
double r32907053 = r32907049 - r32907052;
double r32907054 = a;
double r32907055 = b;
double r32907056 = r32907054 * r32907055;
double r32907057 = c;
double r32907058 = i;
double r32907059 = r32907057 * r32907058;
double r32907060 = r32907056 - r32907059;
double r32907061 = r32907053 * r32907060;
double r32907062 = j;
double r32907063 = r32907047 * r32907062;
double r32907064 = k;
double r32907065 = r32907050 * r32907064;
double r32907066 = r32907063 - r32907065;
double r32907067 = y0;
double r32907068 = r32907067 * r32907055;
double r32907069 = y1;
double r32907070 = r32907069 * r32907058;
double r32907071 = r32907068 - r32907070;
double r32907072 = r32907066 * r32907071;
double r32907073 = r32907061 - r32907072;
double r32907074 = y2;
double r32907075 = r32907047 * r32907074;
double r32907076 = y3;
double r32907077 = r32907050 * r32907076;
double r32907078 = r32907075 - r32907077;
double r32907079 = r32907067 * r32907057;
double r32907080 = r32907069 * r32907054;
double r32907081 = r32907079 - r32907080;
double r32907082 = r32907078 * r32907081;
double r32907083 = r32907073 + r32907082;
double r32907084 = r32907051 * r32907062;
double r32907085 = r32907048 * r32907064;
double r32907086 = r32907084 - r32907085;
double r32907087 = y4;
double r32907088 = r32907087 * r32907055;
double r32907089 = y5;
double r32907090 = r32907089 * r32907058;
double r32907091 = r32907088 - r32907090;
double r32907092 = r32907086 * r32907091;
double r32907093 = r32907083 + r32907092;
double r32907094 = r32907051 * r32907074;
double r32907095 = r32907048 * r32907076;
double r32907096 = r32907094 - r32907095;
double r32907097 = r32907087 * r32907057;
double r32907098 = r32907089 * r32907054;
double r32907099 = r32907097 - r32907098;
double r32907100 = r32907096 * r32907099;
double r32907101 = r32907093 - r32907100;
double r32907102 = r32907064 * r32907074;
double r32907103 = r32907062 * r32907076;
double r32907104 = r32907102 - r32907103;
double r32907105 = r32907087 * r32907069;
double r32907106 = r32907089 * r32907067;
double r32907107 = r32907105 - r32907106;
double r32907108 = r32907104 * r32907107;
double r32907109 = r32907101 + r32907108;
return r32907109;
}
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 r32907110 = b;
double r32907111 = -7.138489777882016e-31;
bool r32907112 = r32907110 <= r32907111;
double r32907113 = k;
double r32907114 = y2;
double r32907115 = r32907113 * r32907114;
double r32907116 = j;
double r32907117 = y3;
double r32907118 = r32907116 * r32907117;
double r32907119 = r32907115 - r32907118;
double r32907120 = y4;
double r32907121 = y1;
double r32907122 = r32907120 * r32907121;
double r32907123 = y0;
double r32907124 = y5;
double r32907125 = r32907123 * r32907124;
double r32907126 = r32907122 - r32907125;
double r32907127 = r32907119 * r32907126;
double r32907128 = r32907110 * r32907120;
double r32907129 = i;
double r32907130 = r32907129 * r32907124;
double r32907131 = r32907128 - r32907130;
double r32907132 = t;
double r32907133 = r32907116 * r32907132;
double r32907134 = y;
double r32907135 = r32907134 * r32907113;
double r32907136 = r32907133 - r32907135;
double r32907137 = r32907131 * r32907136;
double r32907138 = x;
double r32907139 = r32907138 * r32907134;
double r32907140 = z;
double r32907141 = r32907132 * r32907140;
double r32907142 = r32907139 - r32907141;
double r32907143 = a;
double r32907144 = r32907110 * r32907143;
double r32907145 = c;
double r32907146 = r32907129 * r32907145;
double r32907147 = r32907144 - r32907146;
double r32907148 = r32907142 * r32907147;
double r32907149 = r32907110 * r32907123;
double r32907150 = r32907129 * r32907121;
double r32907151 = r32907149 - r32907150;
double r32907152 = cbrt(r32907151);
double r32907153 = r32907152 * r32907152;
double r32907154 = r32907138 * r32907116;
double r32907155 = r32907140 * r32907113;
double r32907156 = r32907154 - r32907155;
double r32907157 = r32907153 * r32907156;
double r32907158 = r32907157 * r32907152;
double r32907159 = r32907148 - r32907158;
double r32907160 = r32907138 * r32907114;
double r32907161 = r32907140 * r32907117;
double r32907162 = r32907160 - r32907161;
double r32907163 = r32907145 * r32907123;
double r32907164 = r32907121 * r32907143;
double r32907165 = r32907163 - r32907164;
double r32907166 = r32907162 * r32907165;
double r32907167 = r32907159 + r32907166;
double r32907168 = r32907137 + r32907167;
double r32907169 = r32907114 * r32907132;
double r32907170 = r32907134 * r32907117;
double r32907171 = r32907169 - r32907170;
double r32907172 = r32907145 * r32907120;
double r32907173 = r32907124 * r32907143;
double r32907174 = r32907172 - r32907173;
double r32907175 = r32907171 * r32907174;
double r32907176 = r32907168 - r32907175;
double r32907177 = r32907127 + r32907176;
double r32907178 = 7.748151508253241e-166;
bool r32907179 = r32907110 <= r32907178;
double r32907180 = r32907124 * r32907113;
double r32907181 = r32907134 * r32907180;
double r32907182 = r32907181 * r32907129;
double r32907183 = r32907124 * r32907116;
double r32907184 = r32907129 * r32907183;
double r32907185 = r32907132 * r32907184;
double r32907186 = r32907134 * r32907128;
double r32907187 = r32907113 * r32907186;
double r32907188 = r32907185 + r32907187;
double r32907189 = r32907182 - r32907188;
double r32907190 = r32907156 * r32907151;
double r32907191 = r32907148 - r32907190;
double r32907192 = r32907191 + r32907166;
double r32907193 = r32907189 + r32907192;
double r32907194 = r32907193 - r32907175;
double r32907195 = r32907127 + r32907194;
double r32907196 = cbrt(r32907162);
double r32907197 = r32907196 * r32907196;
double r32907198 = r32907165 * r32907196;
double r32907199 = r32907197 * r32907198;
double r32907200 = r32907191 + r32907199;
double r32907201 = r32907137 + r32907200;
double r32907202 = r32907201 - r32907175;
double r32907203 = r32907127 + r32907202;
double r32907204 = r32907179 ? r32907195 : r32907203;
double r32907205 = r32907112 ? r32907177 : r32907204;
return r32907205;
}




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.0 |
|---|---|
| Target | 30.7 |
| Herbie | 27.5 |
if b < -7.138489777882016e-31Initial program 28.1
rmApplied add-cube-cbrt28.3
Applied associate-*r*28.3
if -7.138489777882016e-31 < b < 7.748151508253241e-166Initial program 26.4
Taylor expanded around inf 27.4
if 7.748151508253241e-166 < b Initial program 27.1
rmApplied add-cube-cbrt27.2
Applied associate-*l*27.2
Final simplification27.5
herbie shell --seed 2019171
(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)))))