\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}\;j \le -5.751840893668180833289046042335064888196 \cdot 10^{-126}:\\
\;\;\;\;\left(\left(\left(y \cdot z\right) \cdot x + \left(-a \cdot \left(x \cdot t\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;j \le 9.452834462714390157396345831184569686165 \cdot 10^{-35}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(-i \cdot a\right) \cdot b\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 r377622 = x;
double r377623 = y;
double r377624 = z;
double r377625 = r377623 * r377624;
double r377626 = t;
double r377627 = a;
double r377628 = r377626 * r377627;
double r377629 = r377625 - r377628;
double r377630 = r377622 * r377629;
double r377631 = b;
double r377632 = c;
double r377633 = r377632 * r377624;
double r377634 = i;
double r377635 = r377634 * r377627;
double r377636 = r377633 - r377635;
double r377637 = r377631 * r377636;
double r377638 = r377630 - r377637;
double r377639 = j;
double r377640 = r377632 * r377626;
double r377641 = r377634 * r377623;
double r377642 = r377640 - r377641;
double r377643 = r377639 * r377642;
double r377644 = r377638 + r377643;
return r377644;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r377645 = j;
double r377646 = -5.751840893668181e-126;
bool r377647 = r377645 <= r377646;
double r377648 = y;
double r377649 = z;
double r377650 = r377648 * r377649;
double r377651 = x;
double r377652 = r377650 * r377651;
double r377653 = a;
double r377654 = t;
double r377655 = r377651 * r377654;
double r377656 = r377653 * r377655;
double r377657 = -r377656;
double r377658 = r377652 + r377657;
double r377659 = b;
double r377660 = c;
double r377661 = r377660 * r377649;
double r377662 = i;
double r377663 = r377662 * r377653;
double r377664 = r377661 - r377663;
double r377665 = r377659 * r377664;
double r377666 = r377658 - r377665;
double r377667 = r377660 * r377654;
double r377668 = r377662 * r377648;
double r377669 = r377667 - r377668;
double r377670 = r377645 * r377669;
double r377671 = r377666 + r377670;
double r377672 = 9.45283446271439e-35;
bool r377673 = r377645 <= r377672;
double r377674 = r377654 * r377653;
double r377675 = r377650 - r377674;
double r377676 = r377651 * r377675;
double r377677 = r377676 - r377665;
double r377678 = r377645 * r377660;
double r377679 = r377654 * r377678;
double r377680 = r377645 * r377648;
double r377681 = r377662 * r377680;
double r377682 = -r377681;
double r377683 = r377679 + r377682;
double r377684 = r377677 + r377683;
double r377685 = r377659 * r377660;
double r377686 = r377649 * r377685;
double r377687 = -r377663;
double r377688 = r377687 * r377659;
double r377689 = r377686 + r377688;
double r377690 = r377676 - r377689;
double r377691 = r377690 + r377670;
double r377692 = r377673 ? r377684 : r377691;
double r377693 = r377647 ? r377671 : r377692;
return r377693;
}




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.4 |
|---|---|
| Target | 16.2 |
| Herbie | 10.1 |
if j < -5.751840893668181e-126Initial program 9.6
rmApplied sub-neg9.6
Applied distribute-lft-in9.6
Simplified9.6
Simplified10.1
if -5.751840893668181e-126 < j < 9.45283446271439e-35Initial program 16.6
rmApplied sub-neg16.6
Applied distribute-lft-in16.6
Simplified14.3
Simplified11.0
if 9.45283446271439e-35 < j Initial program 7.8
rmApplied sub-neg7.8
Applied distribute-lft-in7.8
Simplified8.0
Simplified8.0
Final simplification10.1
herbie shell --seed 2019212
(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.1209789191959122e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.7125538182184851e-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.63353334603158369e-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)))))