\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}\;i \le -5.399805233907068252297795713753297330209 \cdot 10^{-132}:\\
\;\;\;\;\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(c \cdot t\right) + 1 \cdot \left(-1 \cdot \left(i \cdot \left(y \cdot j\right)\right)\right)\right)\\
\mathbf{elif}\;i \le -6.066601058953688871087898362073558578406 \cdot 10^{-271}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)\\
\mathbf{elif}\;i \le 5.35820216338663462891582209778136737461 \cdot 10^{-130}:\\
\;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(j \cdot \left(c \cdot t\right) + j \cdot \left(-i \cdot y\right)\right)\\
\mathbf{elif}\;i \le 9.764633783766700810211076280405055225809 \cdot 10^{238}:\\
\;\;\;\;\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(c \cdot t\right) + \left(j \cdot i\right) \cdot \left(-y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(j \cdot c\right) \cdot t + j \cdot \left(-i \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 r694448 = x;
double r694449 = y;
double r694450 = z;
double r694451 = r694449 * r694450;
double r694452 = t;
double r694453 = a;
double r694454 = r694452 * r694453;
double r694455 = r694451 - r694454;
double r694456 = r694448 * r694455;
double r694457 = b;
double r694458 = c;
double r694459 = r694458 * r694450;
double r694460 = i;
double r694461 = r694460 * r694453;
double r694462 = r694459 - r694461;
double r694463 = r694457 * r694462;
double r694464 = r694456 - r694463;
double r694465 = j;
double r694466 = r694458 * r694452;
double r694467 = r694460 * r694449;
double r694468 = r694466 - r694467;
double r694469 = r694465 * r694468;
double r694470 = r694464 + r694469;
return r694470;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r694471 = i;
double r694472 = -5.399805233907068e-132;
bool r694473 = r694471 <= r694472;
double r694474 = x;
double r694475 = y;
double r694476 = z;
double r694477 = r694475 * r694476;
double r694478 = t;
double r694479 = a;
double r694480 = r694478 * r694479;
double r694481 = r694477 - r694480;
double r694482 = r694474 * r694481;
double r694483 = b;
double r694484 = c;
double r694485 = r694484 * r694476;
double r694486 = r694471 * r694479;
double r694487 = r694485 - r694486;
double r694488 = r694483 * r694487;
double r694489 = r694482 - r694488;
double r694490 = j;
double r694491 = r694484 * r694478;
double r694492 = r694490 * r694491;
double r694493 = 1.0;
double r694494 = -1.0;
double r694495 = r694475 * r694490;
double r694496 = r694471 * r694495;
double r694497 = r694494 * r694496;
double r694498 = r694493 * r694497;
double r694499 = r694492 + r694498;
double r694500 = r694489 + r694499;
double r694501 = -6.066601058953689e-271;
bool r694502 = r694471 <= r694501;
double r694503 = r694474 * r694477;
double r694504 = r694474 * r694478;
double r694505 = r694479 * r694504;
double r694506 = r694494 * r694505;
double r694507 = r694493 * r694506;
double r694508 = r694503 + r694507;
double r694509 = r694508 - r694488;
double r694510 = r694471 * r694475;
double r694511 = -r694510;
double r694512 = r694490 * r694511;
double r694513 = r694492 + r694512;
double r694514 = r694509 + r694513;
double r694515 = 5.358202163386635e-130;
bool r694516 = r694471 <= r694515;
double r694517 = r694474 * r694475;
double r694518 = r694517 * r694476;
double r694519 = -r694480;
double r694520 = r694474 * r694519;
double r694521 = r694518 + r694520;
double r694522 = r694521 - r694488;
double r694523 = r694522 + r694513;
double r694524 = 9.764633783766701e+238;
bool r694525 = r694471 <= r694524;
double r694526 = r694490 * r694471;
double r694527 = -r694475;
double r694528 = r694526 * r694527;
double r694529 = r694492 + r694528;
double r694530 = r694489 + r694529;
double r694531 = r694503 + r694520;
double r694532 = r694531 - r694488;
double r694533 = r694490 * r694484;
double r694534 = r694533 * r694478;
double r694535 = r694534 + r694512;
double r694536 = r694532 + r694535;
double r694537 = r694525 ? r694530 : r694536;
double r694538 = r694516 ? r694523 : r694537;
double r694539 = r694502 ? r694514 : r694538;
double r694540 = r694473 ? r694500 : r694539;
return r694540;
}




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.3 |
|---|---|
| Target | 16.2 |
| Herbie | 11.7 |
if i < -5.399805233907068e-132Initial program 13.5
rmApplied sub-neg13.5
Applied distribute-lft-in13.5
rmApplied *-un-lft-identity13.5
Applied associate-*l*13.5
Simplified11.8
if -5.399805233907068e-132 < i < -6.066601058953689e-271Initial program 10.0
rmApplied sub-neg10.0
Applied distribute-lft-in9.9
rmApplied sub-neg9.9
Applied distribute-lft-in9.9
rmApplied *-un-lft-identity9.9
Applied associate-*l*9.9
Simplified9.5
if -6.066601058953689e-271 < i < 5.358202163386635e-130Initial program 9.7
rmApplied sub-neg9.7
Applied distribute-lft-in9.7
rmApplied sub-neg9.7
Applied distribute-lft-in9.7
rmApplied associate-*r*10.4
if 5.358202163386635e-130 < i < 9.764633783766701e+238Initial program 12.1
rmApplied sub-neg12.1
Applied distribute-lft-in12.1
rmApplied distribute-rgt-neg-in12.1
Applied associate-*r*11.9
if 9.764633783766701e+238 < i Initial program 30.2
rmApplied sub-neg30.2
Applied distribute-lft-in30.2
rmApplied sub-neg30.2
Applied distribute-lft-in30.2
rmApplied associate-*r*28.9
Final simplification11.7
herbie shell --seed 2019353
(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)))))