\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}\;b \le -4.39963790607126303166727796248420519442 \cdot 10^{194}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)\right)\\
\mathbf{elif}\;b \le 1.791240738306205660841110248460150700112 \cdot 10^{-6}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \left(\left(z \cdot b\right) \cdot c + \left(-a \cdot \left(i \cdot b\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \sqrt{b} \cdot \left(\sqrt{b} \cdot \left(c \cdot z - i \cdot a\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 r511584 = x;
double r511585 = y;
double r511586 = z;
double r511587 = r511585 * r511586;
double r511588 = t;
double r511589 = a;
double r511590 = r511588 * r511589;
double r511591 = r511587 - r511590;
double r511592 = r511584 * r511591;
double r511593 = b;
double r511594 = c;
double r511595 = r511594 * r511586;
double r511596 = i;
double r511597 = r511596 * r511589;
double r511598 = r511595 - r511597;
double r511599 = r511593 * r511598;
double r511600 = r511592 - r511599;
double r511601 = j;
double r511602 = r511594 * r511588;
double r511603 = r511596 * r511585;
double r511604 = r511602 - r511603;
double r511605 = r511601 * r511604;
double r511606 = r511600 + r511605;
return r511606;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r511607 = b;
double r511608 = -4.399637906071263e+194;
bool r511609 = r511607 <= r511608;
double r511610 = c;
double r511611 = t;
double r511612 = r511610 * r511611;
double r511613 = i;
double r511614 = y;
double r511615 = r511613 * r511614;
double r511616 = r511612 - r511615;
double r511617 = j;
double r511618 = x;
double r511619 = z;
double r511620 = a;
double r511621 = r511620 * r511611;
double r511622 = -r511621;
double r511623 = fma(r511614, r511619, r511622);
double r511624 = r511618 * r511623;
double r511625 = -r511620;
double r511626 = fma(r511625, r511611, r511621);
double r511627 = r511618 * r511626;
double r511628 = r511624 + r511627;
double r511629 = cbrt(r511607);
double r511630 = r511629 * r511629;
double r511631 = r511610 * r511619;
double r511632 = r511613 * r511620;
double r511633 = r511631 - r511632;
double r511634 = r511629 * r511633;
double r511635 = r511630 * r511634;
double r511636 = r511628 - r511635;
double r511637 = fma(r511616, r511617, r511636);
double r511638 = 1.7912407383062057e-06;
bool r511639 = r511607 <= r511638;
double r511640 = r511619 * r511607;
double r511641 = r511640 * r511610;
double r511642 = r511613 * r511607;
double r511643 = r511620 * r511642;
double r511644 = -r511643;
double r511645 = r511641 + r511644;
double r511646 = r511628 - r511645;
double r511647 = fma(r511616, r511617, r511646);
double r511648 = sqrt(r511607);
double r511649 = r511648 * r511633;
double r511650 = r511648 * r511649;
double r511651 = r511628 - r511650;
double r511652 = fma(r511616, r511617, r511651);
double r511653 = r511639 ? r511647 : r511652;
double r511654 = r511609 ? r511637 : r511653;
return r511654;
}




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
| Original | 12.0 |
|---|---|
| Target | 15.4 |
| Herbie | 9.9 |
if b < -4.399637906071263e+194Initial program 5.7
Simplified5.7
rmApplied prod-diff5.7
Applied distribute-lft-in5.7
rmApplied add-cube-cbrt6.3
Applied associate-*l*6.3
if -4.399637906071263e+194 < b < 1.7912407383062057e-06Initial program 13.7
Simplified13.7
rmApplied prod-diff13.7
Applied distribute-lft-in13.7
rmApplied add-cube-cbrt13.9
Applied associate-*l*13.9
rmApplied sub-neg13.9
Applied distribute-lft-in13.9
Applied distribute-lft-in13.9
Simplified12.6
Simplified10.8
rmApplied associate-*r*10.8
if 1.7912407383062057e-06 < b Initial program 7.3
Simplified7.3
rmApplied prod-diff7.3
Applied distribute-lft-in7.3
rmApplied add-sqr-sqrt7.4
Applied associate-*l*7.4
Final simplification9.9
herbie shell --seed 2020002 +o rules:numerics
(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)))))