\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)
\begin{array}{l}
\mathbf{if}\;b \le -2.557156540206759491060099266665758475148 \cdot 10^{77}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)}\right) \cdot \sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)}\\
\mathbf{elif}\;b \le 6.288387807050133384086894370081620679201 \cdot 10^{-14}:\\
\;\;\;\;j \cdot \left(c \cdot a - y \cdot i\right) + \left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(-t \cdot \left(i \cdot b\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + \left(j \cdot \left(\sqrt[3]{c \cdot a - y \cdot i} \cdot \sqrt[3]{c \cdot a - y \cdot i}\right)\right) \cdot \sqrt[3]{c \cdot a - y \cdot i}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r510673 = x;
double r510674 = y;
double r510675 = z;
double r510676 = r510674 * r510675;
double r510677 = t;
double r510678 = a;
double r510679 = r510677 * r510678;
double r510680 = r510676 - r510679;
double r510681 = r510673 * r510680;
double r510682 = b;
double r510683 = c;
double r510684 = r510683 * r510675;
double r510685 = i;
double r510686 = r510677 * r510685;
double r510687 = r510684 - r510686;
double r510688 = r510682 * r510687;
double r510689 = r510681 - r510688;
double r510690 = j;
double r510691 = r510683 * r510678;
double r510692 = r510674 * r510685;
double r510693 = r510691 - r510692;
double r510694 = r510690 * r510693;
double r510695 = r510689 + r510694;
return r510695;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r510696 = b;
double r510697 = -2.5571565402067595e+77;
bool r510698 = r510696 <= r510697;
double r510699 = x;
double r510700 = y;
double r510701 = z;
double r510702 = r510700 * r510701;
double r510703 = t;
double r510704 = a;
double r510705 = r510703 * r510704;
double r510706 = r510702 - r510705;
double r510707 = r510699 * r510706;
double r510708 = c;
double r510709 = r510708 * r510701;
double r510710 = i;
double r510711 = r510703 * r510710;
double r510712 = r510709 - r510711;
double r510713 = r510696 * r510712;
double r510714 = r510707 - r510713;
double r510715 = j;
double r510716 = r510708 * r510704;
double r510717 = r510700 * r510710;
double r510718 = r510716 - r510717;
double r510719 = r510715 * r510718;
double r510720 = cbrt(r510719);
double r510721 = r510720 * r510720;
double r510722 = r510721 * r510720;
double r510723 = r510714 + r510722;
double r510724 = 6.288387807050133e-14;
bool r510725 = r510696 <= r510724;
double r510726 = r510696 * r510708;
double r510727 = r510701 * r510726;
double r510728 = r510710 * r510696;
double r510729 = r510703 * r510728;
double r510730 = -r510729;
double r510731 = r510727 + r510730;
double r510732 = r510707 - r510731;
double r510733 = r510719 + r510732;
double r510734 = cbrt(r510718);
double r510735 = r510734 * r510734;
double r510736 = r510715 * r510735;
double r510737 = r510736 * r510734;
double r510738 = r510714 + r510737;
double r510739 = r510725 ? r510733 : r510738;
double r510740 = r510698 ? r510723 : r510739;
return r510740;
}




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.5 |
|---|---|
| Target | 20.4 |
| Herbie | 9.2 |
if b < -2.5571565402067595e+77Initial program 7.4
rmApplied add-cube-cbrt7.6
if -2.5571565402067595e+77 < b < 6.288387807050133e-14Initial program 15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
Simplified12.8
rmApplied pow112.8
Applied pow112.8
Applied pow-prod-down12.8
Simplified10.1
if 6.288387807050133e-14 < b Initial program 7.4
rmApplied add-cube-cbrt7.5
Applied associate-*r*7.5
Final simplification9.2
herbie shell --seed 2019323
(FPCore (x y z t a b c i j)
:name "Data.Colour.Matrix:determinant from colour-2.3.3, A"
:precision binary64
:herbie-target
(if (< x -1.469694296777705e-64) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2) (pow (* t i) 2))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i)))) (if (< x 3.2113527362226803e-147) (- (* (- (* b i) (* x a)) t) (- (* z (* c b)) (* j (- (* c a) (* y i))))) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2) (pow (* t i) 2))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* t i)))) (* j (- (* c a) (* y i)))))