\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}\;a \le -2.936819268186205650838255402135178279408 \cdot 10^{-268} \lor \neg \left(a \le 1.284975181144422199319550481563476668578 \cdot 10^{121}\right):\\
\;\;\;\;\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(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)}^{1}\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z\right)\right) + x \cdot \left(-t \cdot a\right)\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r855752 = x;
double r855753 = y;
double r855754 = z;
double r855755 = r855753 * r855754;
double r855756 = t;
double r855757 = a;
double r855758 = r855756 * r855757;
double r855759 = r855755 - r855758;
double r855760 = r855752 * r855759;
double r855761 = b;
double r855762 = c;
double r855763 = r855762 * r855754;
double r855764 = i;
double r855765 = r855756 * r855764;
double r855766 = r855763 - r855765;
double r855767 = r855761 * r855766;
double r855768 = r855760 - r855767;
double r855769 = j;
double r855770 = r855762 * r855757;
double r855771 = r855753 * r855764;
double r855772 = r855770 - r855771;
double r855773 = r855769 * r855772;
double r855774 = r855768 + r855773;
return r855774;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r855775 = a;
double r855776 = -2.9368192681862057e-268;
bool r855777 = r855775 <= r855776;
double r855778 = 1.2849751811444222e+121;
bool r855779 = r855775 <= r855778;
double r855780 = !r855779;
bool r855781 = r855777 || r855780;
double r855782 = x;
double r855783 = y;
double r855784 = r855782 * r855783;
double r855785 = z;
double r855786 = r855784 * r855785;
double r855787 = cbrt(r855786);
double r855788 = r855787 * r855787;
double r855789 = r855788 * r855787;
double r855790 = -1.0;
double r855791 = t;
double r855792 = r855782 * r855791;
double r855793 = r855775 * r855792;
double r855794 = r855790 * r855793;
double r855795 = 1.0;
double r855796 = pow(r855794, r855795);
double r855797 = r855789 + r855796;
double r855798 = b;
double r855799 = c;
double r855800 = r855799 * r855785;
double r855801 = i;
double r855802 = r855791 * r855801;
double r855803 = r855800 - r855802;
double r855804 = r855798 * r855803;
double r855805 = r855797 - r855804;
double r855806 = j;
double r855807 = r855799 * r855775;
double r855808 = r855783 * r855801;
double r855809 = r855807 - r855808;
double r855810 = r855806 * r855809;
double r855811 = r855805 + r855810;
double r855812 = cbrt(r855782);
double r855813 = r855812 * r855812;
double r855814 = r855783 * r855785;
double r855815 = r855812 * r855814;
double r855816 = r855813 * r855815;
double r855817 = r855791 * r855775;
double r855818 = -r855817;
double r855819 = r855782 * r855818;
double r855820 = r855816 + r855819;
double r855821 = r855820 - r855804;
double r855822 = r855821 + r855810;
double r855823 = r855781 ? r855811 : r855822;
return r855823;
}




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.3 |
|---|---|
| Target | 20.3 |
| Herbie | 11.8 |
if a < -2.9368192681862057e-268 or 1.2849751811444222e+121 < a Initial program 14.0
rmApplied sub-neg14.0
Applied distribute-lft-in14.0
rmApplied associate-*r*14.1
rmApplied pow114.1
Applied pow114.1
Applied pow-prod-down14.1
Simplified12.9
rmApplied add-cube-cbrt13.0
if -2.9368192681862057e-268 < a < 1.2849751811444222e+121Initial program 10.1
rmApplied sub-neg10.1
Applied distribute-lft-in10.1
rmApplied add-cube-cbrt10.3
Applied associate-*l*10.3
Final simplification11.8
herbie shell --seed 2020001 +o rules:numerics
(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)))))