\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\begin{array}{l}
\mathbf{if}\;x \le -3.3735883346778377 \cdot 10^{-126}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(j \cdot \left(\sqrt[3]{c \cdot t - i \cdot y} \cdot \sqrt[3]{c \cdot t - i \cdot y}\right)\right) \cdot \sqrt[3]{c \cdot t - i \cdot y}\\
\mathbf{elif}\;x \le 1.34472083159762248 \cdot 10^{-129}:\\
\;\;\;\;\left(0 - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt{x} \cdot \left(\sqrt{x} \cdot \left(y \cdot z - t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \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 r639496 = x;
double r639497 = y;
double r639498 = z;
double r639499 = r639497 * r639498;
double r639500 = t;
double r639501 = a;
double r639502 = r639500 * r639501;
double r639503 = r639499 - r639502;
double r639504 = r639496 * r639503;
double r639505 = b;
double r639506 = c;
double r639507 = r639506 * r639498;
double r639508 = i;
double r639509 = r639508 * r639501;
double r639510 = r639507 - r639509;
double r639511 = r639505 * r639510;
double r639512 = r639504 - r639511;
double r639513 = j;
double r639514 = r639506 * r639500;
double r639515 = r639508 * r639497;
double r639516 = r639514 - r639515;
double r639517 = r639513 * r639516;
double r639518 = r639512 + r639517;
return r639518;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r639519 = x;
double r639520 = -3.373588334677838e-126;
bool r639521 = r639519 <= r639520;
double r639522 = y;
double r639523 = z;
double r639524 = r639522 * r639523;
double r639525 = t;
double r639526 = a;
double r639527 = r639525 * r639526;
double r639528 = r639524 - r639527;
double r639529 = r639519 * r639528;
double r639530 = b;
double r639531 = c;
double r639532 = r639531 * r639523;
double r639533 = i;
double r639534 = r639533 * r639526;
double r639535 = r639532 - r639534;
double r639536 = r639530 * r639535;
double r639537 = r639529 - r639536;
double r639538 = j;
double r639539 = r639531 * r639525;
double r639540 = r639533 * r639522;
double r639541 = r639539 - r639540;
double r639542 = cbrt(r639541);
double r639543 = r639542 * r639542;
double r639544 = r639538 * r639543;
double r639545 = r639544 * r639542;
double r639546 = r639537 + r639545;
double r639547 = 1.3447208315976225e-129;
bool r639548 = r639519 <= r639547;
double r639549 = 0.0;
double r639550 = r639549 - r639536;
double r639551 = r639538 * r639541;
double r639552 = r639550 + r639551;
double r639553 = sqrt(r639519);
double r639554 = r639553 * r639528;
double r639555 = r639553 * r639554;
double r639556 = r639555 - r639536;
double r639557 = r639556 + r639551;
double r639558 = r639548 ? r639552 : r639557;
double r639559 = r639521 ? r639546 : r639558;
return r639559;
}




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
Results
| Original | 12.0 |
|---|---|
| Target | 15.5 |
| Herbie | 12.6 |
if x < -3.373588334677838e-126Initial program 9.8
rmApplied add-cube-cbrt10.1
Applied associate-*r*10.0
if -3.373588334677838e-126 < x < 1.3447208315976225e-129Initial program 16.3
Taylor expanded around 0 17.5
if 1.3447208315976225e-129 < x Initial program 9.3
rmApplied add-sqr-sqrt9.4
Applied associate-*l*9.4
Final simplification12.6
herbie shell --seed 2020062
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))