\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 -6.83346635036375763 \cdot 10^{180}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\sqrt[3]{j} \cdot \left(c \cdot t - i \cdot y\right)\right)\\
\mathbf{elif}\;b \le 0.0155641473725553429:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(z \cdot b\right) \cdot c + \left(\left(-i\right) \cdot b\right) \cdot a\right)\right) + \left(\left(c \cdot t\right) \cdot j + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(c \cdot t\right) \cdot j + \left(-\left(i \cdot j\right) \cdot y\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 r430642 = x;
double r430643 = y;
double r430644 = z;
double r430645 = r430643 * r430644;
double r430646 = t;
double r430647 = a;
double r430648 = r430646 * r430647;
double r430649 = r430645 - r430648;
double r430650 = r430642 * r430649;
double r430651 = b;
double r430652 = c;
double r430653 = r430652 * r430644;
double r430654 = i;
double r430655 = r430654 * r430647;
double r430656 = r430653 - r430655;
double r430657 = r430651 * r430656;
double r430658 = r430650 - r430657;
double r430659 = j;
double r430660 = r430652 * r430646;
double r430661 = r430654 * r430643;
double r430662 = r430660 - r430661;
double r430663 = r430659 * r430662;
double r430664 = r430658 + r430663;
return r430664;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r430665 = b;
double r430666 = -6.833466350363758e+180;
bool r430667 = r430665 <= r430666;
double r430668 = x;
double r430669 = y;
double r430670 = z;
double r430671 = r430669 * r430670;
double r430672 = t;
double r430673 = a;
double r430674 = r430672 * r430673;
double r430675 = r430671 - r430674;
double r430676 = r430668 * r430675;
double r430677 = c;
double r430678 = r430677 * r430670;
double r430679 = i;
double r430680 = r430679 * r430673;
double r430681 = r430678 - r430680;
double r430682 = r430665 * r430681;
double r430683 = r430676 - r430682;
double r430684 = j;
double r430685 = cbrt(r430684);
double r430686 = r430685 * r430685;
double r430687 = r430677 * r430672;
double r430688 = r430679 * r430669;
double r430689 = r430687 - r430688;
double r430690 = r430685 * r430689;
double r430691 = r430686 * r430690;
double r430692 = r430683 + r430691;
double r430693 = 0.015564147372555343;
bool r430694 = r430665 <= r430693;
double r430695 = r430670 * r430665;
double r430696 = r430695 * r430677;
double r430697 = -r430679;
double r430698 = r430697 * r430665;
double r430699 = r430698 * r430673;
double r430700 = r430696 + r430699;
double r430701 = r430676 - r430700;
double r430702 = r430687 * r430684;
double r430703 = r430684 * r430669;
double r430704 = r430679 * r430703;
double r430705 = -r430704;
double r430706 = r430702 + r430705;
double r430707 = r430701 + r430706;
double r430708 = r430679 * r430684;
double r430709 = r430708 * r430669;
double r430710 = -r430709;
double r430711 = r430702 + r430710;
double r430712 = r430683 + r430711;
double r430713 = r430694 ? r430707 : r430712;
double r430714 = r430667 ? r430692 : r430713;
return r430714;
}




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 | 9.8 |
if b < -6.833466350363758e+180Initial program 5.5
rmApplied add-cube-cbrt5.7
Applied associate-*l*5.7
if -6.833466350363758e+180 < b < 0.015564147372555343Initial program 14.0
rmApplied sub-neg14.0
Applied distribute-lft-in14.0
Simplified14.0
Simplified14.0
rmApplied sub-neg14.0
Applied distribute-lft-in14.0
Simplified12.9
rmApplied distribute-lft-neg-in12.9
Applied associate-*r*11.0
Simplified11.0
rmApplied associate-*r*10.8
if 0.015564147372555343 < b Initial program 6.8
rmApplied sub-neg6.8
Applied distribute-lft-in6.8
Simplified6.8
Simplified7.9
rmApplied associate-*r*7.2
Final simplification9.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)))))