\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}\;y2 \le -8.344480205004737533865817893018613288849 \cdot 10^{58}:\\
\;\;\;\;\left(\left(\left(\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - y3 \cdot z\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(i \cdot \left(z \cdot \left(y1 \cdot k\right)\right) - \left(k \cdot \left(z \cdot \left(y0 \cdot b\right)\right) + i \cdot \left(j \cdot \left(x \cdot y1\right)\right)\right)\right)\right)\right) + \left(b \cdot y4 - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right)\right) - \left(c \cdot y4 - a \cdot y5\right) \cdot \left(t \cdot y2 - y3 \cdot y\right)\right) + \left(\left(\sqrt[3]{y4 \cdot y1 - y5 \cdot y0} \cdot \sqrt[3]{y4 \cdot y1 - y5 \cdot y0}\right) \cdot \left(y2 \cdot k - j \cdot y3\right)\right) \cdot \sqrt[3]{y4 \cdot y1 - y5 \cdot y0}\\
\mathbf{elif}\;y2 \le -3.165546567858029566172953210928551418613 \cdot 10^{-293}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\sqrt[3]{b \cdot y4 - y5 \cdot i} \cdot \left(\left(\sqrt[3]{b \cdot y4 - y5 \cdot i} \cdot \sqrt[3]{b \cdot y4 - y5 \cdot i}\right) \cdot \left(t \cdot j - y \cdot k\right)\right) + \left(\left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - i \cdot y1\right) \cdot \left(x \cdot j - z \cdot k\right)\right) + \left(\left(\left(y1 \cdot z\right) \cdot y3 - \left(x \cdot y2\right) \cdot y1\right) \cdot a - \left(c \cdot z\right) \cdot \left(y0 \cdot y3\right)\right)\right)\right) - \left(c \cdot y4 - a \cdot y5\right) \cdot \left(t \cdot y2 - y3 \cdot y\right)\right)\\
\mathbf{elif}\;y2 \le 9.385118185418307435453246966192857231322 \cdot 10^{-221}:\\
\;\;\;\;\left(\left(b \cdot y4 - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right) + \left(\left(\sqrt[3]{x \cdot y2 - y3 \cdot z} \cdot \sqrt[3]{x \cdot y2 - y3 \cdot z}\right) \cdot \left(\left(y0 \cdot c - y1 \cdot a\right) \cdot \sqrt[3]{x \cdot y2 - y3 \cdot z}\right) + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - i \cdot y1\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right)\right) + \left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(\left(\sqrt[3]{\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - y3 \cdot z\right)} \cdot \sqrt[3]{\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - y3 \cdot z\right)}\right) \cdot \sqrt[3]{\left(y0 \cdot c - y1 \cdot a\right) \cdot \left(x \cdot y2 - y3 \cdot z\right)} + \left(\left(x \cdot y - t \cdot z\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(y0 \cdot b - i \cdot y1\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right) + \left(b \cdot y4 - y5 \cdot i\right) \cdot \left(t \cdot j - y \cdot k\right)\right) - \left(c \cdot y4 - a \cdot y5\right) \cdot \left(t \cdot y2 - y3 \cdot y\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 r28773290 = x;
double r28773291 = y;
double r28773292 = r28773290 * r28773291;
double r28773293 = z;
double r28773294 = t;
double r28773295 = r28773293 * r28773294;
double r28773296 = r28773292 - r28773295;
double r28773297 = a;
double r28773298 = b;
double r28773299 = r28773297 * r28773298;
double r28773300 = c;
double r28773301 = i;
double r28773302 = r28773300 * r28773301;
double r28773303 = r28773299 - r28773302;
double r28773304 = r28773296 * r28773303;
double r28773305 = j;
double r28773306 = r28773290 * r28773305;
double r28773307 = k;
double r28773308 = r28773293 * r28773307;
double r28773309 = r28773306 - r28773308;
double r28773310 = y0;
double r28773311 = r28773310 * r28773298;
double r28773312 = y1;
double r28773313 = r28773312 * r28773301;
double r28773314 = r28773311 - r28773313;
double r28773315 = r28773309 * r28773314;
double r28773316 = r28773304 - r28773315;
double r28773317 = y2;
double r28773318 = r28773290 * r28773317;
double r28773319 = y3;
double r28773320 = r28773293 * r28773319;
double r28773321 = r28773318 - r28773320;
double r28773322 = r28773310 * r28773300;
double r28773323 = r28773312 * r28773297;
double r28773324 = r28773322 - r28773323;
double r28773325 = r28773321 * r28773324;
double r28773326 = r28773316 + r28773325;
double r28773327 = r28773294 * r28773305;
double r28773328 = r28773291 * r28773307;
double r28773329 = r28773327 - r28773328;
double r28773330 = y4;
double r28773331 = r28773330 * r28773298;
double r28773332 = y5;
double r28773333 = r28773332 * r28773301;
double r28773334 = r28773331 - r28773333;
double r28773335 = r28773329 * r28773334;
double r28773336 = r28773326 + r28773335;
double r28773337 = r28773294 * r28773317;
double r28773338 = r28773291 * r28773319;
double r28773339 = r28773337 - r28773338;
double r28773340 = r28773330 * r28773300;
double r28773341 = r28773332 * r28773297;
double r28773342 = r28773340 - r28773341;
double r28773343 = r28773339 * r28773342;
double r28773344 = r28773336 - r28773343;
double r28773345 = r28773307 * r28773317;
double r28773346 = r28773305 * r28773319;
double r28773347 = r28773345 - r28773346;
double r28773348 = r28773330 * r28773312;
double r28773349 = r28773332 * r28773310;
double r28773350 = r28773348 - r28773349;
double r28773351 = r28773347 * r28773350;
double r28773352 = r28773344 + r28773351;
return r28773352;
}
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 r28773353 = y2;
double r28773354 = -8.344480205004738e+58;
bool r28773355 = r28773353 <= r28773354;
double r28773356 = y0;
double r28773357 = c;
double r28773358 = r28773356 * r28773357;
double r28773359 = y1;
double r28773360 = a;
double r28773361 = r28773359 * r28773360;
double r28773362 = r28773358 - r28773361;
double r28773363 = x;
double r28773364 = r28773363 * r28773353;
double r28773365 = y3;
double r28773366 = z;
double r28773367 = r28773365 * r28773366;
double r28773368 = r28773364 - r28773367;
double r28773369 = r28773362 * r28773368;
double r28773370 = y;
double r28773371 = r28773363 * r28773370;
double r28773372 = t;
double r28773373 = r28773372 * r28773366;
double r28773374 = r28773371 - r28773373;
double r28773375 = b;
double r28773376 = r28773360 * r28773375;
double r28773377 = i;
double r28773378 = r28773377 * r28773357;
double r28773379 = r28773376 - r28773378;
double r28773380 = r28773374 * r28773379;
double r28773381 = k;
double r28773382 = r28773359 * r28773381;
double r28773383 = r28773366 * r28773382;
double r28773384 = r28773377 * r28773383;
double r28773385 = r28773356 * r28773375;
double r28773386 = r28773366 * r28773385;
double r28773387 = r28773381 * r28773386;
double r28773388 = j;
double r28773389 = r28773363 * r28773359;
double r28773390 = r28773388 * r28773389;
double r28773391 = r28773377 * r28773390;
double r28773392 = r28773387 + r28773391;
double r28773393 = r28773384 - r28773392;
double r28773394 = r28773380 - r28773393;
double r28773395 = r28773369 + r28773394;
double r28773396 = y4;
double r28773397 = r28773375 * r28773396;
double r28773398 = y5;
double r28773399 = r28773398 * r28773377;
double r28773400 = r28773397 - r28773399;
double r28773401 = r28773372 * r28773388;
double r28773402 = r28773370 * r28773381;
double r28773403 = r28773401 - r28773402;
double r28773404 = r28773400 * r28773403;
double r28773405 = r28773395 + r28773404;
double r28773406 = r28773357 * r28773396;
double r28773407 = r28773360 * r28773398;
double r28773408 = r28773406 - r28773407;
double r28773409 = r28773372 * r28773353;
double r28773410 = r28773365 * r28773370;
double r28773411 = r28773409 - r28773410;
double r28773412 = r28773408 * r28773411;
double r28773413 = r28773405 - r28773412;
double r28773414 = r28773396 * r28773359;
double r28773415 = r28773398 * r28773356;
double r28773416 = r28773414 - r28773415;
double r28773417 = cbrt(r28773416);
double r28773418 = r28773417 * r28773417;
double r28773419 = r28773353 * r28773381;
double r28773420 = r28773388 * r28773365;
double r28773421 = r28773419 - r28773420;
double r28773422 = r28773418 * r28773421;
double r28773423 = r28773422 * r28773417;
double r28773424 = r28773413 + r28773423;
double r28773425 = -3.1655465678580296e-293;
bool r28773426 = r28773353 <= r28773425;
double r28773427 = r28773421 * r28773416;
double r28773428 = cbrt(r28773400);
double r28773429 = r28773428 * r28773428;
double r28773430 = r28773429 * r28773403;
double r28773431 = r28773428 * r28773430;
double r28773432 = r28773377 * r28773359;
double r28773433 = r28773385 - r28773432;
double r28773434 = r28773363 * r28773388;
double r28773435 = r28773366 * r28773381;
double r28773436 = r28773434 - r28773435;
double r28773437 = r28773433 * r28773436;
double r28773438 = r28773380 - r28773437;
double r28773439 = r28773359 * r28773366;
double r28773440 = r28773439 * r28773365;
double r28773441 = r28773364 * r28773359;
double r28773442 = r28773440 - r28773441;
double r28773443 = r28773442 * r28773360;
double r28773444 = r28773357 * r28773366;
double r28773445 = r28773356 * r28773365;
double r28773446 = r28773444 * r28773445;
double r28773447 = r28773443 - r28773446;
double r28773448 = r28773438 + r28773447;
double r28773449 = r28773431 + r28773448;
double r28773450 = r28773449 - r28773412;
double r28773451 = r28773427 + r28773450;
double r28773452 = 9.385118185418307e-221;
bool r28773453 = r28773353 <= r28773452;
double r28773454 = cbrt(r28773368);
double r28773455 = r28773454 * r28773454;
double r28773456 = r28773362 * r28773454;
double r28773457 = r28773455 * r28773456;
double r28773458 = r28773457 + r28773438;
double r28773459 = r28773404 + r28773458;
double r28773460 = r28773459 + r28773427;
double r28773461 = cbrt(r28773369);
double r28773462 = r28773461 * r28773461;
double r28773463 = r28773462 * r28773461;
double r28773464 = r28773463 + r28773438;
double r28773465 = r28773464 + r28773404;
double r28773466 = r28773465 - r28773412;
double r28773467 = r28773427 + r28773466;
double r28773468 = r28773453 ? r28773460 : r28773467;
double r28773469 = r28773426 ? r28773451 : r28773468;
double r28773470 = r28773355 ? r28773424 : r28773469;
return r28773470;
}




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.7 |
| Herbie | 28.3 |
if y2 < -8.344480205004738e+58Initial program 30.1
rmApplied add-cube-cbrt30.3
Applied associate-*r*30.2
Taylor expanded around inf 31.4
if -8.344480205004738e+58 < y2 < -3.1655465678580296e-293Initial program 26.0
rmApplied add-cube-cbrt26.1
Applied associate-*r*26.1
Taylor expanded around inf 28.2
Simplified28.2
if -3.1655465678580296e-293 < y2 < 9.385118185418307e-221Initial program 28.1
rmApplied add-cube-cbrt28.1
Applied associate-*l*28.1
Taylor expanded around 0 30.3
if 9.385118185418307e-221 < y2 Initial program 26.8
rmApplied add-cube-cbrt26.9
Final simplification28.3
herbie shell --seed 2019192
(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)))))