\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 -7.9425973173534991 \cdot 10^{59}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(\sqrt[3]{\left(i \cdot b\right) \cdot \left(-a\right)} \cdot \sqrt[3]{\left(i \cdot b\right) \cdot \left(-a\right)}\right) \cdot \sqrt[3]{\left(i \cdot b\right) \cdot \left(-a\right)}\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;j \le 4.66076012081488949 \cdot 10^{119}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(i \cdot b\right) \cdot \left(-a\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) - i \cdot \left(j \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(z \cdot b\right) \cdot c + \left(i \cdot b\right) \cdot \left(-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 r384576 = x;
double r384577 = y;
double r384578 = z;
double r384579 = r384577 * r384578;
double r384580 = t;
double r384581 = a;
double r384582 = r384580 * r384581;
double r384583 = r384579 - r384582;
double r384584 = r384576 * r384583;
double r384585 = b;
double r384586 = c;
double r384587 = r384586 * r384578;
double r384588 = i;
double r384589 = r384588 * r384581;
double r384590 = r384587 - r384589;
double r384591 = r384585 * r384590;
double r384592 = r384584 - r384591;
double r384593 = j;
double r384594 = r384586 * r384580;
double r384595 = r384588 * r384577;
double r384596 = r384594 - r384595;
double r384597 = r384593 * r384596;
double r384598 = r384592 + r384597;
return r384598;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r384599 = j;
double r384600 = -7.942597317353499e+59;
bool r384601 = r384599 <= r384600;
double r384602 = x;
double r384603 = y;
double r384604 = z;
double r384605 = r384603 * r384604;
double r384606 = t;
double r384607 = a;
double r384608 = r384606 * r384607;
double r384609 = r384605 - r384608;
double r384610 = r384602 * r384609;
double r384611 = b;
double r384612 = c;
double r384613 = r384611 * r384612;
double r384614 = r384604 * r384613;
double r384615 = i;
double r384616 = r384615 * r384611;
double r384617 = -r384607;
double r384618 = r384616 * r384617;
double r384619 = cbrt(r384618);
double r384620 = r384619 * r384619;
double r384621 = r384620 * r384619;
double r384622 = r384614 + r384621;
double r384623 = r384610 - r384622;
double r384624 = r384612 * r384606;
double r384625 = r384615 * r384603;
double r384626 = r384624 - r384625;
double r384627 = r384599 * r384626;
double r384628 = r384623 + r384627;
double r384629 = 4.6607601208148895e+119;
bool r384630 = r384599 <= r384629;
double r384631 = r384614 + r384618;
double r384632 = r384610 - r384631;
double r384633 = r384599 * r384612;
double r384634 = r384606 * r384633;
double r384635 = r384599 * r384603;
double r384636 = r384615 * r384635;
double r384637 = r384634 - r384636;
double r384638 = r384632 + r384637;
double r384639 = r384604 * r384611;
double r384640 = r384639 * r384612;
double r384641 = r384640 + r384618;
double r384642 = r384610 - r384641;
double r384643 = r384642 + r384627;
double r384644 = r384630 ? r384638 : r384643;
double r384645 = r384601 ? r384628 : r384644;
return r384645;
}




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.7 |
|---|---|
| Target | 16.6 |
| Herbie | 10.7 |
if j < -7.942597317353499e+59Initial program 8.2
rmApplied sub-neg8.2
Applied distribute-lft-in8.2
Simplified8.3
rmApplied distribute-rgt-neg-in8.3
Applied associate-*r*8.5
Simplified8.5
rmApplied add-cube-cbrt8.6
if -7.942597317353499e+59 < j < 4.6607601208148895e+119Initial program 14.1
rmApplied sub-neg14.1
Applied distribute-lft-in14.1
Simplified14.6
rmApplied distribute-rgt-neg-in14.6
Applied associate-*r*14.4
Simplified14.4
Taylor expanded around inf 11.3
if 4.6607601208148895e+119 < j Initial program 8.1
rmApplied sub-neg8.1
Applied distribute-lft-in8.1
Simplified8.3
rmApplied distribute-rgt-neg-in8.3
Applied associate-*r*8.1
Simplified8.1
rmApplied associate-*r*9.5
Final simplification10.7
herbie shell --seed 2019198 +o rules:numerics
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
: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.0) (pow (* i y) 2.0))) (+ (* 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.0) (pow (* i y) 2.0))) (+ (* 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)))))