\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}\;y0 \le -3.4570970679820737 \cdot 10^{-29}:\\
\;\;\;\;\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(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right)\right) - \left(y0 \cdot \left(y2 \cdot \left(k \cdot y5\right)\right) + y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\right)\\
\mathbf{elif}\;y0 \le -1.84084513179591304 \cdot 10^{-157}:\\
\;\;\;\;\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) + 0\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}\;y0 \le -5.616093564077172 \cdot 10^{-292}:\\
\;\;\;\;\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(\left(t \cdot j - y \cdot k\right) \cdot \left(\sqrt[3]{y4 \cdot b - y5 \cdot i} \cdot \sqrt[3]{y4 \cdot b - y5 \cdot i}\right)\right) \cdot \sqrt[3]{y4 \cdot b - y5 \cdot i}\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + 0\\
\mathbf{elif}\;y0 \le 2.3597299977313244 \cdot 10^{-243}:\\
\;\;\;\;\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}\;y0 \le 2.58716098330626028 \cdot 10^{-129}:\\
\;\;\;\;\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(\left(t \cdot j - y \cdot k\right) \cdot \left(\sqrt[3]{y4 \cdot b - y5 \cdot i} \cdot \sqrt[3]{y4 \cdot b - y5 \cdot i}\right)\right) \cdot \sqrt[3]{y4 \cdot b - y5 \cdot i}\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + 0\\
\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(\left(t \cdot j - y \cdot k\right) \cdot \left(\sqrt[3]{y4 \cdot b - y5 \cdot i} \cdot \sqrt[3]{y4 \cdot b - y5 \cdot i}\right)\right) \cdot \sqrt[3]{y4 \cdot b - y5 \cdot i}\right) - 0\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 r564287 = x;
double r564288 = y;
double r564289 = r564287 * r564288;
double r564290 = z;
double r564291 = t;
double r564292 = r564290 * r564291;
double r564293 = r564289 - r564292;
double r564294 = a;
double r564295 = b;
double r564296 = r564294 * r564295;
double r564297 = c;
double r564298 = i;
double r564299 = r564297 * r564298;
double r564300 = r564296 - r564299;
double r564301 = r564293 * r564300;
double r564302 = j;
double r564303 = r564287 * r564302;
double r564304 = k;
double r564305 = r564290 * r564304;
double r564306 = r564303 - r564305;
double r564307 = y0;
double r564308 = r564307 * r564295;
double r564309 = y1;
double r564310 = r564309 * r564298;
double r564311 = r564308 - r564310;
double r564312 = r564306 * r564311;
double r564313 = r564301 - r564312;
double r564314 = y2;
double r564315 = r564287 * r564314;
double r564316 = y3;
double r564317 = r564290 * r564316;
double r564318 = r564315 - r564317;
double r564319 = r564307 * r564297;
double r564320 = r564309 * r564294;
double r564321 = r564319 - r564320;
double r564322 = r564318 * r564321;
double r564323 = r564313 + r564322;
double r564324 = r564291 * r564302;
double r564325 = r564288 * r564304;
double r564326 = r564324 - r564325;
double r564327 = y4;
double r564328 = r564327 * r564295;
double r564329 = y5;
double r564330 = r564329 * r564298;
double r564331 = r564328 - r564330;
double r564332 = r564326 * r564331;
double r564333 = r564323 + r564332;
double r564334 = r564291 * r564314;
double r564335 = r564288 * r564316;
double r564336 = r564334 - r564335;
double r564337 = r564327 * r564297;
double r564338 = r564329 * r564294;
double r564339 = r564337 - r564338;
double r564340 = r564336 * r564339;
double r564341 = r564333 - r564340;
double r564342 = r564304 * r564314;
double r564343 = r564302 * r564316;
double r564344 = r564342 - r564343;
double r564345 = r564327 * r564309;
double r564346 = r564329 * r564307;
double r564347 = r564345 - r564346;
double r564348 = r564344 * r564347;
double r564349 = r564341 + r564348;
return r564349;
}
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 r564350 = y0;
double r564351 = -3.4570970679820737e-29;
bool r564352 = r564350 <= r564351;
double r564353 = x;
double r564354 = y;
double r564355 = r564353 * r564354;
double r564356 = z;
double r564357 = t;
double r564358 = r564356 * r564357;
double r564359 = r564355 - r564358;
double r564360 = a;
double r564361 = b;
double r564362 = r564360 * r564361;
double r564363 = c;
double r564364 = i;
double r564365 = r564363 * r564364;
double r564366 = r564362 - r564365;
double r564367 = r564359 * r564366;
double r564368 = j;
double r564369 = r564353 * r564368;
double r564370 = k;
double r564371 = r564356 * r564370;
double r564372 = r564369 - r564371;
double r564373 = r564350 * r564361;
double r564374 = y1;
double r564375 = r564374 * r564364;
double r564376 = r564373 - r564375;
double r564377 = r564372 * r564376;
double r564378 = r564367 - r564377;
double r564379 = y2;
double r564380 = r564353 * r564379;
double r564381 = y3;
double r564382 = r564356 * r564381;
double r564383 = r564380 - r564382;
double r564384 = r564350 * r564363;
double r564385 = r564374 * r564360;
double r564386 = r564384 - r564385;
double r564387 = r564383 * r564386;
double r564388 = r564378 + r564387;
double r564389 = r564357 * r564368;
double r564390 = r564354 * r564370;
double r564391 = r564389 - r564390;
double r564392 = y4;
double r564393 = r564392 * r564361;
double r564394 = y5;
double r564395 = r564394 * r564364;
double r564396 = r564393 - r564395;
double r564397 = r564391 * r564396;
double r564398 = r564388 + r564397;
double r564399 = r564357 * r564379;
double r564400 = r564354 * r564381;
double r564401 = r564399 - r564400;
double r564402 = r564392 * r564363;
double r564403 = r564394 * r564360;
double r564404 = r564402 - r564403;
double r564405 = r564401 * r564404;
double r564406 = r564398 - r564405;
double r564407 = r564368 * r564394;
double r564408 = r564381 * r564407;
double r564409 = r564350 * r564408;
double r564410 = r564370 * r564394;
double r564411 = r564379 * r564410;
double r564412 = r564350 * r564411;
double r564413 = r564368 * r564392;
double r564414 = r564381 * r564413;
double r564415 = r564374 * r564414;
double r564416 = r564412 + r564415;
double r564417 = r564409 - r564416;
double r564418 = r564406 + r564417;
double r564419 = -1.840845131795913e-157;
bool r564420 = r564350 <= r564419;
double r564421 = 0.0;
double r564422 = r564388 + r564421;
double r564423 = r564422 - r564405;
double r564424 = r564370 * r564379;
double r564425 = r564368 * r564381;
double r564426 = r564424 - r564425;
double r564427 = r564392 * r564374;
double r564428 = r564394 * r564350;
double r564429 = r564427 - r564428;
double r564430 = r564426 * r564429;
double r564431 = r564423 + r564430;
double r564432 = -5.616093564077172e-292;
bool r564433 = r564350 <= r564432;
double r564434 = cbrt(r564396);
double r564435 = r564434 * r564434;
double r564436 = r564391 * r564435;
double r564437 = r564436 * r564434;
double r564438 = r564388 + r564437;
double r564439 = r564438 - r564405;
double r564440 = r564439 + r564421;
double r564441 = 2.3597299977313244e-243;
bool r564442 = r564350 <= r564441;
double r564443 = r564356 * r564374;
double r564444 = r564364 * r564443;
double r564445 = r564370 * r564444;
double r564446 = r564374 * r564353;
double r564447 = r564368 * r564446;
double r564448 = r564364 * r564447;
double r564449 = r564370 * r564361;
double r564450 = r564356 * r564449;
double r564451 = r564350 * r564450;
double r564452 = r564448 + r564451;
double r564453 = r564445 - r564452;
double r564454 = r564367 - r564453;
double r564455 = r564454 + r564387;
double r564456 = r564455 + r564397;
double r564457 = r564456 - r564405;
double r564458 = r564457 + r564430;
double r564459 = 2.5871609833062603e-129;
bool r564460 = r564350 <= r564459;
double r564461 = r564438 - r564421;
double r564462 = r564461 + r564430;
double r564463 = r564460 ? r564440 : r564462;
double r564464 = r564442 ? r564458 : r564463;
double r564465 = r564433 ? r564440 : r564464;
double r564466 = r564420 ? r564431 : r564465;
double r564467 = r564352 ? r564418 : r564466;
return r564467;
}




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.6 |
| Herbie | 30.2 |
if y0 < -3.4570970679820737e-29Initial program 26.9
Taylor expanded around inf 26.6
if -3.4570970679820737e-29 < y0 < -1.840845131795913e-157Initial program 25.8
Taylor expanded around 0 31.5
if -1.840845131795913e-157 < y0 < -5.616093564077172e-292 or 2.3597299977313244e-243 < y0 < 2.5871609833062603e-129Initial program 26.8
rmApplied add-cube-cbrt27.0
Applied associate-*r*27.0
Taylor expanded around 0 30.7
if -5.616093564077172e-292 < y0 < 2.3597299977313244e-243Initial program 28.7
Taylor expanded around inf 31.1
if 2.5871609833062603e-129 < y0 Initial program 27.7
rmApplied add-cube-cbrt27.7
Applied associate-*r*27.7
Taylor expanded around 0 31.4
Final simplification30.2
herbie shell --seed 2020062
(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)))))