\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}\;c \le -5.42423195281810071178944798742094235422 \cdot 10^{-5}:\\
\;\;\;\;\left(\left(\left(\left(b \cdot a - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right) - \left(\sqrt[3]{j \cdot x - z \cdot k} \cdot \sqrt[3]{j \cdot x - z \cdot k}\right) \cdot \left(\left(y0 \cdot b - y1 \cdot i\right) \cdot \sqrt[3]{j \cdot x - z \cdot k}\right)\right) + \left(y2 \cdot x - z \cdot y3\right) \cdot \left(y0 \cdot c - a \cdot y1\right)\right) + \left(b \cdot y4 - y5 \cdot i\right) \cdot \left(j \cdot t - k \cdot y\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(y2 \cdot t - y3 \cdot y\right)\\
\mathbf{elif}\;c \le -1.063843804848684809768563552980133772853 \cdot 10^{-208}:\\
\;\;\;\;\left(\left(\left(\left(a \cdot \left(\left(z \cdot y1\right) \cdot y3\right) - \left(\left(\left(y1 \cdot y2\right) \cdot x\right) \cdot a + \left(\left(y3 \cdot c\right) \cdot z\right) \cdot y0\right)\right) + \left(\left(b \cdot a - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right)\right) + \left(b \cdot y4 - y5 \cdot i\right) \cdot \left(j \cdot t - k \cdot y\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(y2 \cdot t - y3 \cdot y\right)\right) + \left(k \cdot y2 - y3 \cdot j\right) \cdot \left(y1 \cdot y4 - y5 \cdot y0\right)\\
\mathbf{elif}\;c \le 1.213882826940811552324221651193040372757 \cdot 10^{-284}:\\
\;\;\;\;\left(k \cdot y2 - y3 \cdot j\right) \cdot \left(y1 \cdot y4 - y5 \cdot y0\right) + \left(\left(\left(\left(y2 \cdot x - z \cdot y3\right) \cdot \left(y0 \cdot c - a \cdot y1\right) + \left(\left(b \cdot a - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right)\right) + \left(k \cdot \left(i \cdot \left(y5 \cdot y\right)\right) - \left(\left(y4 \cdot \left(b \cdot y\right)\right) \cdot k + t \cdot \left(\left(j \cdot y5\right) \cdot i\right)\right)\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(y2 \cdot t - y3 \cdot y\right)\right)\\
\mathbf{elif}\;c \le 4.317409275790695709030528357537462504805 \cdot 10^{-16}:\\
\;\;\;\;\left(\left(\left(\left(a \cdot \left(\left(z \cdot y1\right) \cdot y3\right) - \left(\left(\left(y1 \cdot y2\right) \cdot x\right) \cdot a + \left(\left(y3 \cdot c\right) \cdot z\right) \cdot y0\right)\right) + \left(\left(b \cdot a - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(j \cdot x - z \cdot k\right)\right)\right) + \left(b \cdot y4 - y5 \cdot i\right) \cdot \left(j \cdot t - k \cdot y\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(y2 \cdot t - y3 \cdot y\right)\right) + \left(k \cdot y2 - y3 \cdot j\right) \cdot \left(y1 \cdot y4 - y5 \cdot y0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(b \cdot a - c \cdot i\right) \cdot \left(y \cdot x - t \cdot z\right) - \left(\sqrt[3]{j \cdot x - z \cdot k} \cdot \sqrt[3]{j \cdot x - z \cdot k}\right) \cdot \left(\left(y0 \cdot b - y1 \cdot i\right) \cdot \sqrt[3]{j \cdot x - z \cdot k}\right)\right) + \left(y2 \cdot x - z \cdot y3\right) \cdot \left(y0 \cdot c - a \cdot y1\right)\right) + \left(b \cdot y4 - y5 \cdot i\right) \cdot \left(j \cdot t - k \cdot y\right)\right) - \left(y4 \cdot c - y5 \cdot a\right) \cdot \left(y2 \cdot t - y3 \cdot y\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 r26329236 = x;
double r26329237 = y;
double r26329238 = r26329236 * r26329237;
double r26329239 = z;
double r26329240 = t;
double r26329241 = r26329239 * r26329240;
double r26329242 = r26329238 - r26329241;
double r26329243 = a;
double r26329244 = b;
double r26329245 = r26329243 * r26329244;
double r26329246 = c;
double r26329247 = i;
double r26329248 = r26329246 * r26329247;
double r26329249 = r26329245 - r26329248;
double r26329250 = r26329242 * r26329249;
double r26329251 = j;
double r26329252 = r26329236 * r26329251;
double r26329253 = k;
double r26329254 = r26329239 * r26329253;
double r26329255 = r26329252 - r26329254;
double r26329256 = y0;
double r26329257 = r26329256 * r26329244;
double r26329258 = y1;
double r26329259 = r26329258 * r26329247;
double r26329260 = r26329257 - r26329259;
double r26329261 = r26329255 * r26329260;
double r26329262 = r26329250 - r26329261;
double r26329263 = y2;
double r26329264 = r26329236 * r26329263;
double r26329265 = y3;
double r26329266 = r26329239 * r26329265;
double r26329267 = r26329264 - r26329266;
double r26329268 = r26329256 * r26329246;
double r26329269 = r26329258 * r26329243;
double r26329270 = r26329268 - r26329269;
double r26329271 = r26329267 * r26329270;
double r26329272 = r26329262 + r26329271;
double r26329273 = r26329240 * r26329251;
double r26329274 = r26329237 * r26329253;
double r26329275 = r26329273 - r26329274;
double r26329276 = y4;
double r26329277 = r26329276 * r26329244;
double r26329278 = y5;
double r26329279 = r26329278 * r26329247;
double r26329280 = r26329277 - r26329279;
double r26329281 = r26329275 * r26329280;
double r26329282 = r26329272 + r26329281;
double r26329283 = r26329240 * r26329263;
double r26329284 = r26329237 * r26329265;
double r26329285 = r26329283 - r26329284;
double r26329286 = r26329276 * r26329246;
double r26329287 = r26329278 * r26329243;
double r26329288 = r26329286 - r26329287;
double r26329289 = r26329285 * r26329288;
double r26329290 = r26329282 - r26329289;
double r26329291 = r26329253 * r26329263;
double r26329292 = r26329251 * r26329265;
double r26329293 = r26329291 - r26329292;
double r26329294 = r26329276 * r26329258;
double r26329295 = r26329278 * r26329256;
double r26329296 = r26329294 - r26329295;
double r26329297 = r26329293 * r26329296;
double r26329298 = r26329290 + r26329297;
return r26329298;
}
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 r26329299 = c;
double r26329300 = -5.424231952818101e-05;
bool r26329301 = r26329299 <= r26329300;
double r26329302 = b;
double r26329303 = a;
double r26329304 = r26329302 * r26329303;
double r26329305 = i;
double r26329306 = r26329299 * r26329305;
double r26329307 = r26329304 - r26329306;
double r26329308 = y;
double r26329309 = x;
double r26329310 = r26329308 * r26329309;
double r26329311 = t;
double r26329312 = z;
double r26329313 = r26329311 * r26329312;
double r26329314 = r26329310 - r26329313;
double r26329315 = r26329307 * r26329314;
double r26329316 = j;
double r26329317 = r26329316 * r26329309;
double r26329318 = k;
double r26329319 = r26329312 * r26329318;
double r26329320 = r26329317 - r26329319;
double r26329321 = cbrt(r26329320);
double r26329322 = r26329321 * r26329321;
double r26329323 = y0;
double r26329324 = r26329323 * r26329302;
double r26329325 = y1;
double r26329326 = r26329325 * r26329305;
double r26329327 = r26329324 - r26329326;
double r26329328 = r26329327 * r26329321;
double r26329329 = r26329322 * r26329328;
double r26329330 = r26329315 - r26329329;
double r26329331 = y2;
double r26329332 = r26329331 * r26329309;
double r26329333 = y3;
double r26329334 = r26329312 * r26329333;
double r26329335 = r26329332 - r26329334;
double r26329336 = r26329323 * r26329299;
double r26329337 = r26329303 * r26329325;
double r26329338 = r26329336 - r26329337;
double r26329339 = r26329335 * r26329338;
double r26329340 = r26329330 + r26329339;
double r26329341 = y4;
double r26329342 = r26329302 * r26329341;
double r26329343 = y5;
double r26329344 = r26329343 * r26329305;
double r26329345 = r26329342 - r26329344;
double r26329346 = r26329316 * r26329311;
double r26329347 = r26329318 * r26329308;
double r26329348 = r26329346 - r26329347;
double r26329349 = r26329345 * r26329348;
double r26329350 = r26329340 + r26329349;
double r26329351 = r26329341 * r26329299;
double r26329352 = r26329343 * r26329303;
double r26329353 = r26329351 - r26329352;
double r26329354 = r26329331 * r26329311;
double r26329355 = r26329333 * r26329308;
double r26329356 = r26329354 - r26329355;
double r26329357 = r26329353 * r26329356;
double r26329358 = r26329350 - r26329357;
double r26329359 = -1.0638438048486848e-208;
bool r26329360 = r26329299 <= r26329359;
double r26329361 = r26329312 * r26329325;
double r26329362 = r26329361 * r26329333;
double r26329363 = r26329303 * r26329362;
double r26329364 = r26329325 * r26329331;
double r26329365 = r26329364 * r26329309;
double r26329366 = r26329365 * r26329303;
double r26329367 = r26329333 * r26329299;
double r26329368 = r26329367 * r26329312;
double r26329369 = r26329368 * r26329323;
double r26329370 = r26329366 + r26329369;
double r26329371 = r26329363 - r26329370;
double r26329372 = r26329327 * r26329320;
double r26329373 = r26329315 - r26329372;
double r26329374 = r26329371 + r26329373;
double r26329375 = r26329374 + r26329349;
double r26329376 = r26329375 - r26329357;
double r26329377 = r26329318 * r26329331;
double r26329378 = r26329333 * r26329316;
double r26329379 = r26329377 - r26329378;
double r26329380 = r26329325 * r26329341;
double r26329381 = r26329343 * r26329323;
double r26329382 = r26329380 - r26329381;
double r26329383 = r26329379 * r26329382;
double r26329384 = r26329376 + r26329383;
double r26329385 = 1.2138828269408116e-284;
bool r26329386 = r26329299 <= r26329385;
double r26329387 = r26329339 + r26329373;
double r26329388 = r26329343 * r26329308;
double r26329389 = r26329305 * r26329388;
double r26329390 = r26329318 * r26329389;
double r26329391 = r26329302 * r26329308;
double r26329392 = r26329341 * r26329391;
double r26329393 = r26329392 * r26329318;
double r26329394 = r26329316 * r26329343;
double r26329395 = r26329394 * r26329305;
double r26329396 = r26329311 * r26329395;
double r26329397 = r26329393 + r26329396;
double r26329398 = r26329390 - r26329397;
double r26329399 = r26329387 + r26329398;
double r26329400 = r26329399 - r26329357;
double r26329401 = r26329383 + r26329400;
double r26329402 = 4.3174092757906957e-16;
bool r26329403 = r26329299 <= r26329402;
double r26329404 = r26329403 ? r26329384 : r26329358;
double r26329405 = r26329386 ? r26329401 : r26329404;
double r26329406 = r26329360 ? r26329384 : r26329405;
double r26329407 = r26329301 ? r26329358 : r26329406;
return r26329407;
}




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 | 26.8 |
|---|---|
| Target | 30.3 |
| Herbie | 28.9 |
if c < -5.424231952818101e-05 or 4.3174092757906957e-16 < c Initial program 27.6
rmApplied add-cube-cbrt27.7
Applied associate-*l*27.7
Taylor expanded around 0 30.8
if -5.424231952818101e-05 < c < -1.0638438048486848e-208 or 1.2138828269408116e-284 < c < 4.3174092757906957e-16Initial program 26.2
Taylor expanded around inf 27.1
if -1.0638438048486848e-208 < c < 1.2138828269408116e-284Initial program 26.9
Taylor expanded around inf 29.8
Final simplification28.9
herbie shell --seed 2019200
(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)))))