\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 -2.19802269886933 \cdot 10^{-44}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(\sqrt[3]{\left(z \cdot b\right) \cdot c} \cdot \sqrt[3]{\left(z \cdot b\right) \cdot c}\right) \cdot \sqrt[3]{\left(z \cdot b\right) \cdot c} + \left(-b\right) \cdot \left(i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;x \le -3.03250526217835203 \cdot 10^{-113}:\\
\;\;\;\;\left(t \cdot \left(j \cdot c\right) + a \cdot \left(i \cdot b\right)\right) - i \cdot \left(j \cdot y\right)\\
\mathbf{elif}\;x \le 8.1670837412048603 \cdot 10^{-187}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(\sqrt[3]{\left(z \cdot b\right) \cdot c} \cdot \sqrt[3]{\left(z \cdot b\right) \cdot c}\right) \cdot \sqrt[3]{\left(z \cdot b\right) \cdot c} + \left(-b\right) \cdot \left(i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;x \le 6.994862030262357 \cdot 10^{141}:\\
\;\;\;\;\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}\;x \le 4.8310657242358433 \cdot 10^{287}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + 0\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z - t \cdot a\right)\right) - \left(\left(z \cdot b\right) \cdot c + \left(-b\right) \cdot \left(i \cdot a\right)\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 r726553 = x;
double r726554 = y;
double r726555 = z;
double r726556 = r726554 * r726555;
double r726557 = t;
double r726558 = a;
double r726559 = r726557 * r726558;
double r726560 = r726556 - r726559;
double r726561 = r726553 * r726560;
double r726562 = b;
double r726563 = c;
double r726564 = r726563 * r726555;
double r726565 = i;
double r726566 = r726565 * r726558;
double r726567 = r726564 - r726566;
double r726568 = r726562 * r726567;
double r726569 = r726561 - r726568;
double r726570 = j;
double r726571 = r726563 * r726557;
double r726572 = r726565 * r726554;
double r726573 = r726571 - r726572;
double r726574 = r726570 * r726573;
double r726575 = r726569 + r726574;
return r726575;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r726576 = x;
double r726577 = -2.198022698869332e-44;
bool r726578 = r726576 <= r726577;
double r726579 = y;
double r726580 = z;
double r726581 = r726579 * r726580;
double r726582 = t;
double r726583 = a;
double r726584 = r726582 * r726583;
double r726585 = r726581 - r726584;
double r726586 = r726576 * r726585;
double r726587 = b;
double r726588 = r726580 * r726587;
double r726589 = c;
double r726590 = r726588 * r726589;
double r726591 = cbrt(r726590);
double r726592 = r726591 * r726591;
double r726593 = r726592 * r726591;
double r726594 = -r726587;
double r726595 = i;
double r726596 = r726595 * r726583;
double r726597 = r726594 * r726596;
double r726598 = r726593 + r726597;
double r726599 = r726586 - r726598;
double r726600 = j;
double r726601 = r726589 * r726582;
double r726602 = r726595 * r726579;
double r726603 = r726601 - r726602;
double r726604 = r726600 * r726603;
double r726605 = r726599 + r726604;
double r726606 = -3.032505262178352e-113;
bool r726607 = r726576 <= r726606;
double r726608 = r726600 * r726589;
double r726609 = r726582 * r726608;
double r726610 = r726595 * r726587;
double r726611 = r726583 * r726610;
double r726612 = r726609 + r726611;
double r726613 = r726600 * r726579;
double r726614 = r726595 * r726613;
double r726615 = r726612 - r726614;
double r726616 = 8.16708374120486e-187;
bool r726617 = r726576 <= r726616;
double r726618 = 6.994862030262357e+141;
bool r726619 = r726576 <= r726618;
double r726620 = r726587 * r726589;
double r726621 = r726580 * r726620;
double r726622 = -r726611;
double r726623 = r726621 + r726622;
double r726624 = r726586 - r726623;
double r726625 = r726624 + r726604;
double r726626 = 4.831065724235843e+287;
bool r726627 = r726576 <= r726626;
double r726628 = r726589 * r726580;
double r726629 = r726628 - r726596;
double r726630 = r726587 * r726629;
double r726631 = r726586 - r726630;
double r726632 = 0.0;
double r726633 = r726631 + r726632;
double r726634 = cbrt(r726576);
double r726635 = r726634 * r726634;
double r726636 = r726634 * r726585;
double r726637 = r726635 * r726636;
double r726638 = r726590 + r726597;
double r726639 = r726637 - r726638;
double r726640 = r726639 + r726604;
double r726641 = r726627 ? r726633 : r726640;
double r726642 = r726619 ? r726625 : r726641;
double r726643 = r726617 ? r726605 : r726642;
double r726644 = r726607 ? r726615 : r726643;
double r726645 = r726578 ? r726605 : r726644;
return r726645;
}




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.1 |
|---|---|
| Target | 16.0 |
| Herbie | 14.8 |
if x < -2.198022698869332e-44 or -3.032505262178352e-113 < x < 8.16708374120486e-187Initial program 13.4
rmApplied add-cube-cbrt13.7
Applied associate-*l*13.7
rmApplied sub-neg13.7
Applied distribute-lft-in13.7
Applied distribute-lft-in13.7
Simplified14.0
Simplified13.9
rmApplied associate-*r*13.9
rmApplied add-cube-cbrt14.0
if -2.198022698869332e-44 < x < -3.032505262178352e-113Initial program 11.9
Taylor expanded around inf 33.3
if 8.16708374120486e-187 < x < 6.994862030262357e+141Initial program 11.0
rmApplied add-cube-cbrt11.3
Applied associate-*l*11.3
rmApplied sub-neg11.3
Applied distribute-lft-in11.3
Applied distribute-lft-in11.3
Simplified11.6
Simplified11.4
rmApplied distribute-lft-neg-out11.4
Simplified11.6
if 6.994862030262357e+141 < x < 4.831065724235843e+287Initial program 7.3
Taylor expanded around 0 17.0
if 4.831065724235843e+287 < x Initial program 7.3
rmApplied add-cube-cbrt7.5
Applied associate-*l*7.5
rmApplied sub-neg7.5
Applied distribute-lft-in7.5
Applied distribute-lft-in7.5
Simplified10.5
Simplified10.5
rmApplied associate-*r*8.4
rmApplied add-cube-cbrt9.2
Applied associate-*l*9.2
Final simplification14.8
herbie shell --seed 2020046
(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)))))