\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}\;t \le -1.8132182994707265 \cdot 10^{172}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(z \cdot b\right) \cdot c + i \cdot \left(\left(-a\right) \cdot b\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{elif}\;t \le -4.3441848100341449 \cdot 10^{-82}:\\
\;\;\;\;\left(\left(x \cdot \left(z \cdot y\right) - a \cdot \left(x \cdot t\right)\right) - \left(\left(z \cdot b\right) \cdot c + i \cdot \left(\left(-a\right) \cdot b\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;t \le -2.0482729984780924 \cdot 10^{-118}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(z \cdot b\right) \cdot c + i \cdot \left(\left(-a\right) \cdot b\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{elif}\;t \le -3.4045282169254156 \cdot 10^{-188}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(-a \cdot \left(i \cdot b\right)\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;t \le 8.3618244494638386 \cdot 10^{21}:\\
\;\;\;\;\left(\left(x \cdot \left(z \cdot y\right) - a \cdot \left(x \cdot t\right)\right) - \left(\left(z \cdot b\right) \cdot c + i \cdot \left(\left(-a\right) \cdot b\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(z \cdot b\right) \cdot c + i \cdot \left(\left(-a\right) \cdot b\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\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 r364476 = x;
double r364477 = y;
double r364478 = z;
double r364479 = r364477 * r364478;
double r364480 = t;
double r364481 = a;
double r364482 = r364480 * r364481;
double r364483 = r364479 - r364482;
double r364484 = r364476 * r364483;
double r364485 = b;
double r364486 = c;
double r364487 = r364486 * r364478;
double r364488 = i;
double r364489 = r364488 * r364481;
double r364490 = r364487 - r364489;
double r364491 = r364485 * r364490;
double r364492 = r364484 - r364491;
double r364493 = j;
double r364494 = r364486 * r364480;
double r364495 = r364488 * r364477;
double r364496 = r364494 - r364495;
double r364497 = r364493 * r364496;
double r364498 = r364492 + r364497;
return r364498;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r364499 = t;
double r364500 = -1.8132182994707265e+172;
bool r364501 = r364499 <= r364500;
double r364502 = x;
double r364503 = y;
double r364504 = z;
double r364505 = r364503 * r364504;
double r364506 = a;
double r364507 = r364499 * r364506;
double r364508 = r364505 - r364507;
double r364509 = r364502 * r364508;
double r364510 = b;
double r364511 = r364504 * r364510;
double r364512 = c;
double r364513 = r364511 * r364512;
double r364514 = i;
double r364515 = -r364506;
double r364516 = r364515 * r364510;
double r364517 = r364514 * r364516;
double r364518 = r364513 + r364517;
double r364519 = r364509 - r364518;
double r364520 = j;
double r364521 = r364520 * r364512;
double r364522 = r364499 * r364521;
double r364523 = r364520 * r364503;
double r364524 = r364514 * r364523;
double r364525 = -r364524;
double r364526 = r364522 + r364525;
double r364527 = r364519 + r364526;
double r364528 = -4.344184810034145e-82;
bool r364529 = r364499 <= r364528;
double r364530 = r364504 * r364503;
double r364531 = r364502 * r364530;
double r364532 = r364502 * r364499;
double r364533 = r364506 * r364532;
double r364534 = r364531 - r364533;
double r364535 = r364534 - r364518;
double r364536 = r364512 * r364499;
double r364537 = r364514 * r364503;
double r364538 = r364536 - r364537;
double r364539 = r364520 * r364538;
double r364540 = r364535 + r364539;
double r364541 = -2.0482729984780924e-118;
bool r364542 = r364499 <= r364541;
double r364543 = -3.4045282169254156e-188;
bool r364544 = r364499 <= r364543;
double r364545 = r364510 * r364512;
double r364546 = r364504 * r364545;
double r364547 = r364514 * r364510;
double r364548 = r364506 * r364547;
double r364549 = -r364548;
double r364550 = r364546 + r364549;
double r364551 = r364509 - r364550;
double r364552 = r364551 + r364539;
double r364553 = 8.361824449463839e+21;
bool r364554 = r364499 <= r364553;
double r364555 = r364554 ? r364540 : r364527;
double r364556 = r364544 ? r364552 : r364555;
double r364557 = r364542 ? r364527 : r364556;
double r364558 = r364529 ? r364540 : r364557;
double r364559 = r364501 ? r364527 : r364558;
return r364559;
}




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 | 11.9 |
|---|---|
| Target | 15.8 |
| Herbie | 10.7 |
if t < -1.8132182994707265e+172 or -4.344184810034145e-82 < t < -2.0482729984780924e-118 or 8.361824449463839e+21 < t Initial program 18.0
rmApplied sub-neg18.0
Applied distribute-lft-in18.0
Simplified18.2
Simplified18.2
rmApplied distribute-rgt-neg-in18.2
Applied associate-*l*18.2
rmApplied associate-*r*19.3
rmApplied sub-neg19.3
Applied distribute-lft-in19.3
Simplified14.8
Simplified14.0
if -1.8132182994707265e+172 < t < -4.344184810034145e-82 or -3.4045282169254156e-188 < t < 8.361824449463839e+21Initial program 9.7
rmApplied sub-neg9.7
Applied distribute-lft-in9.7
Simplified10.2
Simplified10.2
rmApplied distribute-rgt-neg-in10.2
Applied associate-*l*10.0
rmApplied associate-*r*9.5
Taylor expanded around inf 9.6
if -2.0482729984780924e-118 < t < -3.4045282169254156e-188Initial program 8.6
rmApplied sub-neg8.6
Applied distribute-lft-in8.6
Simplified8.7
Simplified8.7
rmApplied distribute-rgt-neg-in8.7
Applied associate-*l*8.8
rmApplied distribute-lft-neg-out8.8
Applied distribute-rgt-neg-out8.8
Simplified7.9
Final simplification10.7
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
: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.0) (pow (* i y) 2.0))) (+ (* 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.0) (pow (* i y) 2.0))) (+ (* 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)))))