\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 1.30806973774118257 \cdot 10^{-50}:\\
\;\;\;\;\left(\left(\left(\sqrt[3]{\left(x \cdot y\right) \cdot z} \cdot \sqrt[3]{\left(x \cdot y\right) \cdot z}\right) \cdot \sqrt[3]{\left(x \cdot y\right) \cdot z} + \left(x \cdot t\right) \cdot \left(-a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + x \cdot \left(t \cdot \left(-a\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\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 r606633 = x;
double r606634 = y;
double r606635 = z;
double r606636 = r606634 * r606635;
double r606637 = t;
double r606638 = a;
double r606639 = r606637 * r606638;
double r606640 = r606636 - r606639;
double r606641 = r606633 * r606640;
double r606642 = b;
double r606643 = c;
double r606644 = r606643 * r606635;
double r606645 = i;
double r606646 = r606645 * r606638;
double r606647 = r606644 - r606646;
double r606648 = r606642 * r606647;
double r606649 = r606641 - r606648;
double r606650 = j;
double r606651 = r606643 * r606637;
double r606652 = r606645 * r606634;
double r606653 = r606651 - r606652;
double r606654 = r606650 * r606653;
double r606655 = r606649 + r606654;
return r606655;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r606656 = x;
double r606657 = 1.3080697377411826e-50;
bool r606658 = r606656 <= r606657;
double r606659 = y;
double r606660 = r606656 * r606659;
double r606661 = z;
double r606662 = r606660 * r606661;
double r606663 = cbrt(r606662);
double r606664 = r606663 * r606663;
double r606665 = r606664 * r606663;
double r606666 = t;
double r606667 = r606656 * r606666;
double r606668 = a;
double r606669 = -r606668;
double r606670 = r606667 * r606669;
double r606671 = r606665 + r606670;
double r606672 = b;
double r606673 = c;
double r606674 = r606673 * r606661;
double r606675 = i;
double r606676 = r606675 * r606668;
double r606677 = r606674 - r606676;
double r606678 = r606672 * r606677;
double r606679 = r606671 - r606678;
double r606680 = j;
double r606681 = r606673 * r606666;
double r606682 = r606675 * r606659;
double r606683 = r606681 - r606682;
double r606684 = r606680 * r606683;
double r606685 = r606679 + r606684;
double r606686 = r606666 * r606669;
double r606687 = r606656 * r606686;
double r606688 = r606662 + r606687;
double r606689 = r606688 - r606678;
double r606690 = r606689 + r606684;
double r606691 = r606658 ? r606685 : r606690;
return r606691;
}




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.5 |
|---|---|
| Target | 15.4 |
| Herbie | 11.5 |
if x < 1.3080697377411826e-50Initial program 12.7
rmApplied sub-neg12.7
Applied distribute-lft-in12.7
rmApplied distribute-rgt-neg-in12.7
Applied associate-*r*12.1
rmApplied associate-*r*11.2
rmApplied add-cube-cbrt11.4
if 1.3080697377411826e-50 < x Initial program 7.5
rmApplied sub-neg7.5
Applied distribute-lft-in7.5
rmApplied distribute-rgt-neg-in7.5
Applied associate-*r*11.1
rmApplied associate-*r*15.0
rmApplied associate-*l*11.9
Final simplification11.5
herbie shell --seed 2020056
(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)))))