\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}\;z \le -1.3859811544496863 \cdot 10^{-150}:\\
\;\;\;\;\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(a \cdot \left(y3 \cdot \left(y \cdot y5\right)\right) - \left(y \cdot \left(y3 \cdot \left(y4 \cdot c\right)\right) + y5 \cdot \left(a \cdot \left(y2 \cdot t\right)\right)\right)\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;z \le -1.8301320911536272 \cdot 10^{-302}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(k \cdot \left(i \cdot \left(z \cdot y1\right)\right) - \left(i \cdot \left(j \cdot \left(y1 \cdot x\right)\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(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}\;z \le 5.6732046777558966 \cdot 10^{-241}:\\
\;\;\;\;\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(a \cdot \left(y3 \cdot \left(y1 \cdot z\right)\right) - \left(y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\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}\;z \le 5.1710861254145052 \cdot 10^{-82}:\\
\;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(i \cdot \left(z \cdot c\right)\right) - \left(i \cdot \left(c \cdot \left(y \cdot x\right)\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{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(a \cdot \left(y3 \cdot \left(y \cdot y5\right)\right) - \left(y \cdot \left(y3 \cdot \left(y4 \cdot c\right)\right) + y5 \cdot \left(a \cdot \left(y2 \cdot t\right)\right)\right)\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 r636087 = x;
double r636088 = y;
double r636089 = r636087 * r636088;
double r636090 = z;
double r636091 = t;
double r636092 = r636090 * r636091;
double r636093 = r636089 - r636092;
double r636094 = a;
double r636095 = b;
double r636096 = r636094 * r636095;
double r636097 = c;
double r636098 = i;
double r636099 = r636097 * r636098;
double r636100 = r636096 - r636099;
double r636101 = r636093 * r636100;
double r636102 = j;
double r636103 = r636087 * r636102;
double r636104 = k;
double r636105 = r636090 * r636104;
double r636106 = r636103 - r636105;
double r636107 = y0;
double r636108 = r636107 * r636095;
double r636109 = y1;
double r636110 = r636109 * r636098;
double r636111 = r636108 - r636110;
double r636112 = r636106 * r636111;
double r636113 = r636101 - r636112;
double r636114 = y2;
double r636115 = r636087 * r636114;
double r636116 = y3;
double r636117 = r636090 * r636116;
double r636118 = r636115 - r636117;
double r636119 = r636107 * r636097;
double r636120 = r636109 * r636094;
double r636121 = r636119 - r636120;
double r636122 = r636118 * r636121;
double r636123 = r636113 + r636122;
double r636124 = r636091 * r636102;
double r636125 = r636088 * r636104;
double r636126 = r636124 - r636125;
double r636127 = y4;
double r636128 = r636127 * r636095;
double r636129 = y5;
double r636130 = r636129 * r636098;
double r636131 = r636128 - r636130;
double r636132 = r636126 * r636131;
double r636133 = r636123 + r636132;
double r636134 = r636091 * r636114;
double r636135 = r636088 * r636116;
double r636136 = r636134 - r636135;
double r636137 = r636127 * r636097;
double r636138 = r636129 * r636094;
double r636139 = r636137 - r636138;
double r636140 = r636136 * r636139;
double r636141 = r636133 - r636140;
double r636142 = r636104 * r636114;
double r636143 = r636102 * r636116;
double r636144 = r636142 - r636143;
double r636145 = r636127 * r636109;
double r636146 = r636129 * r636107;
double r636147 = r636145 - r636146;
double r636148 = r636144 * r636147;
double r636149 = r636141 + r636148;
return r636149;
}
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 r636150 = z;
double r636151 = -1.3859811544496863e-150;
bool r636152 = r636150 <= r636151;
double r636153 = x;
double r636154 = y;
double r636155 = r636153 * r636154;
double r636156 = t;
double r636157 = r636150 * r636156;
double r636158 = r636155 - r636157;
double r636159 = a;
double r636160 = b;
double r636161 = r636159 * r636160;
double r636162 = c;
double r636163 = i;
double r636164 = r636162 * r636163;
double r636165 = r636161 - r636164;
double r636166 = r636158 * r636165;
double r636167 = j;
double r636168 = r636153 * r636167;
double r636169 = k;
double r636170 = r636150 * r636169;
double r636171 = r636168 - r636170;
double r636172 = y0;
double r636173 = r636172 * r636160;
double r636174 = y1;
double r636175 = r636174 * r636163;
double r636176 = r636173 - r636175;
double r636177 = r636171 * r636176;
double r636178 = r636166 - r636177;
double r636179 = y2;
double r636180 = r636153 * r636179;
double r636181 = y3;
double r636182 = r636150 * r636181;
double r636183 = r636180 - r636182;
double r636184 = r636172 * r636162;
double r636185 = r636174 * r636159;
double r636186 = r636184 - r636185;
double r636187 = r636183 * r636186;
double r636188 = r636178 + r636187;
double r636189 = r636156 * r636167;
double r636190 = r636154 * r636169;
double r636191 = r636189 - r636190;
double r636192 = y4;
double r636193 = r636192 * r636160;
double r636194 = y5;
double r636195 = r636194 * r636163;
double r636196 = r636193 - r636195;
double r636197 = r636191 * r636196;
double r636198 = r636188 + r636197;
double r636199 = r636154 * r636194;
double r636200 = r636181 * r636199;
double r636201 = r636159 * r636200;
double r636202 = r636192 * r636162;
double r636203 = r636181 * r636202;
double r636204 = r636154 * r636203;
double r636205 = r636179 * r636156;
double r636206 = r636159 * r636205;
double r636207 = r636194 * r636206;
double r636208 = r636204 + r636207;
double r636209 = r636201 - r636208;
double r636210 = r636198 - r636209;
double r636211 = r636169 * r636179;
double r636212 = r636167 * r636181;
double r636213 = r636211 - r636212;
double r636214 = r636192 * r636174;
double r636215 = r636194 * r636172;
double r636216 = r636214 - r636215;
double r636217 = r636213 * r636216;
double r636218 = r636210 + r636217;
double r636219 = -1.8301320911536272e-302;
bool r636220 = r636150 <= r636219;
double r636221 = r636150 * r636174;
double r636222 = r636163 * r636221;
double r636223 = r636169 * r636222;
double r636224 = r636174 * r636153;
double r636225 = r636167 * r636224;
double r636226 = r636163 * r636225;
double r636227 = r636169 * r636160;
double r636228 = r636150 * r636227;
double r636229 = r636172 * r636228;
double r636230 = r636226 + r636229;
double r636231 = r636223 - r636230;
double r636232 = r636166 - r636231;
double r636233 = r636232 + r636187;
double r636234 = r636233 + r636197;
double r636235 = r636156 * r636179;
double r636236 = r636154 * r636181;
double r636237 = r636235 - r636236;
double r636238 = r636194 * r636159;
double r636239 = r636202 - r636238;
double r636240 = r636237 * r636239;
double r636241 = r636234 - r636240;
double r636242 = r636241 + r636217;
double r636243 = 5.6732046777558966e-241;
bool r636244 = r636150 <= r636243;
double r636245 = r636174 * r636150;
double r636246 = r636181 * r636245;
double r636247 = r636159 * r636246;
double r636248 = r636181 * r636162;
double r636249 = r636150 * r636248;
double r636250 = r636172 * r636249;
double r636251 = r636179 * r636174;
double r636252 = r636153 * r636251;
double r636253 = r636159 * r636252;
double r636254 = r636250 + r636253;
double r636255 = r636247 - r636254;
double r636256 = r636178 + r636255;
double r636257 = r636256 + r636197;
double r636258 = r636257 - r636240;
double r636259 = r636258 + r636217;
double r636260 = 5.171086125414505e-82;
bool r636261 = r636150 <= r636260;
double r636262 = r636150 * r636162;
double r636263 = r636163 * r636262;
double r636264 = r636156 * r636263;
double r636265 = r636154 * r636153;
double r636266 = r636162 * r636265;
double r636267 = r636163 * r636266;
double r636268 = r636150 * r636160;
double r636269 = r636156 * r636268;
double r636270 = r636159 * r636269;
double r636271 = r636267 + r636270;
double r636272 = r636264 - r636271;
double r636273 = r636272 - r636177;
double r636274 = r636273 + r636187;
double r636275 = r636274 + r636197;
double r636276 = r636275 - r636240;
double r636277 = r636276 + r636217;
double r636278 = r636261 ? r636277 : r636218;
double r636279 = r636244 ? r636259 : r636278;
double r636280 = r636220 ? r636242 : r636279;
double r636281 = r636152 ? r636218 : r636280;
return r636281;
}




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.6 |
| Herbie | 28.8 |
if z < -1.3859811544496863e-150 or 5.171086125414505e-82 < z Initial program 27.2
Taylor expanded around inf 29.2
if -1.3859811544496863e-150 < z < -1.8301320911536272e-302Initial program 25.1
Taylor expanded around inf 27.5
if -1.8301320911536272e-302 < z < 5.6732046777558966e-241Initial program 27.1
Taylor expanded around inf 29.5
if 5.6732046777558966e-241 < z < 5.171086125414505e-82Initial program 28.0
Taylor expanded around inf 28.7
Final simplification28.8
herbie shell --seed 2020045
(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)))))