\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 r31745357 = x;
double r31745358 = y;
double r31745359 = r31745357 * r31745358;
double r31745360 = z;
double r31745361 = t;
double r31745362 = r31745360 * r31745361;
double r31745363 = r31745359 - r31745362;
double r31745364 = a;
double r31745365 = b;
double r31745366 = r31745364 * r31745365;
double r31745367 = c;
double r31745368 = i;
double r31745369 = r31745367 * r31745368;
double r31745370 = r31745366 - r31745369;
double r31745371 = r31745363 * r31745370;
double r31745372 = j;
double r31745373 = r31745357 * r31745372;
double r31745374 = k;
double r31745375 = r31745360 * r31745374;
double r31745376 = r31745373 - r31745375;
double r31745377 = y0;
double r31745378 = r31745377 * r31745365;
double r31745379 = y1;
double r31745380 = r31745379 * r31745368;
double r31745381 = r31745378 - r31745380;
double r31745382 = r31745376 * r31745381;
double r31745383 = r31745371 - r31745382;
double r31745384 = y2;
double r31745385 = r31745357 * r31745384;
double r31745386 = y3;
double r31745387 = r31745360 * r31745386;
double r31745388 = r31745385 - r31745387;
double r31745389 = r31745377 * r31745367;
double r31745390 = r31745379 * r31745364;
double r31745391 = r31745389 - r31745390;
double r31745392 = r31745388 * r31745391;
double r31745393 = r31745383 + r31745392;
double r31745394 = r31745361 * r31745372;
double r31745395 = r31745358 * r31745374;
double r31745396 = r31745394 - r31745395;
double r31745397 = y4;
double r31745398 = r31745397 * r31745365;
double r31745399 = y5;
double r31745400 = r31745399 * r31745368;
double r31745401 = r31745398 - r31745400;
double r31745402 = r31745396 * r31745401;
double r31745403 = r31745393 + r31745402;
double r31745404 = r31745361 * r31745384;
double r31745405 = r31745358 * r31745386;
double r31745406 = r31745404 - r31745405;
double r31745407 = r31745397 * r31745367;
double r31745408 = r31745399 * r31745364;
double r31745409 = r31745407 - r31745408;
double r31745410 = r31745406 * r31745409;
double r31745411 = r31745403 - r31745410;
double r31745412 = r31745374 * r31745384;
double r31745413 = r31745372 * r31745386;
double r31745414 = r31745412 - r31745413;
double r31745415 = r31745397 * r31745379;
double r31745416 = r31745399 * r31745377;
double r31745417 = r31745415 - r31745416;
double r31745418 = r31745414 * r31745417;
double r31745419 = r31745411 + r31745418;
return r31745419;
}
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 r31745420 = b;
double r31745421 = -7.138489777882016e-31;
bool r31745422 = r31745420 <= r31745421;
double r31745423 = k;
double r31745424 = y2;
double r31745425 = r31745423 * r31745424;
double r31745426 = j;
double r31745427 = y3;
double r31745428 = r31745426 * r31745427;
double r31745429 = r31745425 - r31745428;
double r31745430 = y4;
double r31745431 = y1;
double r31745432 = r31745430 * r31745431;
double r31745433 = y0;
double r31745434 = y5;
double r31745435 = r31745433 * r31745434;
double r31745436 = r31745432 - r31745435;
double r31745437 = r31745429 * r31745436;
double r31745438 = r31745420 * r31745430;
double r31745439 = i;
double r31745440 = r31745439 * r31745434;
double r31745441 = r31745438 - r31745440;
double r31745442 = t;
double r31745443 = r31745426 * r31745442;
double r31745444 = y;
double r31745445 = r31745444 * r31745423;
double r31745446 = r31745443 - r31745445;
double r31745447 = r31745441 * r31745446;
double r31745448 = x;
double r31745449 = r31745448 * r31745444;
double r31745450 = z;
double r31745451 = r31745442 * r31745450;
double r31745452 = r31745449 - r31745451;
double r31745453 = a;
double r31745454 = r31745420 * r31745453;
double r31745455 = c;
double r31745456 = r31745439 * r31745455;
double r31745457 = r31745454 - r31745456;
double r31745458 = r31745452 * r31745457;
double r31745459 = r31745420 * r31745433;
double r31745460 = r31745439 * r31745431;
double r31745461 = r31745459 - r31745460;
double r31745462 = cbrt(r31745461);
double r31745463 = r31745462 * r31745462;
double r31745464 = r31745448 * r31745426;
double r31745465 = r31745450 * r31745423;
double r31745466 = r31745464 - r31745465;
double r31745467 = r31745463 * r31745466;
double r31745468 = r31745467 * r31745462;
double r31745469 = r31745458 - r31745468;
double r31745470 = r31745448 * r31745424;
double r31745471 = r31745450 * r31745427;
double r31745472 = r31745470 - r31745471;
double r31745473 = r31745455 * r31745433;
double r31745474 = r31745431 * r31745453;
double r31745475 = r31745473 - r31745474;
double r31745476 = r31745472 * r31745475;
double r31745477 = r31745469 + r31745476;
double r31745478 = r31745447 + r31745477;
double r31745479 = r31745424 * r31745442;
double r31745480 = r31745444 * r31745427;
double r31745481 = r31745479 - r31745480;
double r31745482 = r31745455 * r31745430;
double r31745483 = r31745434 * r31745453;
double r31745484 = r31745482 - r31745483;
double r31745485 = r31745481 * r31745484;
double r31745486 = r31745478 - r31745485;
double r31745487 = r31745437 + r31745486;
double r31745488 = 7.748151508253241e-166;
bool r31745489 = r31745420 <= r31745488;
double r31745490 = r31745434 * r31745423;
double r31745491 = r31745444 * r31745490;
double r31745492 = r31745491 * r31745439;
double r31745493 = r31745434 * r31745426;
double r31745494 = r31745439 * r31745493;
double r31745495 = r31745442 * r31745494;
double r31745496 = r31745444 * r31745438;
double r31745497 = r31745423 * r31745496;
double r31745498 = r31745495 + r31745497;
double r31745499 = r31745492 - r31745498;
double r31745500 = r31745466 * r31745461;
double r31745501 = r31745458 - r31745500;
double r31745502 = r31745501 + r31745476;
double r31745503 = r31745499 + r31745502;
double r31745504 = r31745503 - r31745485;
double r31745505 = r31745437 + r31745504;
double r31745506 = cbrt(r31745472);
double r31745507 = r31745506 * r31745506;
double r31745508 = r31745475 * r31745506;
double r31745509 = r31745507 * r31745508;
double r31745510 = r31745501 + r31745509;
double r31745511 = r31745447 + r31745510;
double r31745512 = r31745511 - r31745485;
double r31745513 = r31745437 + r31745512;
double r31745514 = r31745489 ? r31745505 : r31745513;
double r31745515 = r31745422 ? r31745487 : r31745514;
return r31745515;
}




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)))))