\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 -1.885820288721452747199851344770466863725 \cdot 10^{95}:\\
\;\;\;\;\left(\left(\sqrt[3]{\left(y \cdot z - a \cdot t\right) \cdot x} \cdot \sqrt[3]{\left(y \cdot z - a \cdot t\right) \cdot x}\right) \cdot \sqrt[3]{\left(y \cdot z - a \cdot t\right) \cdot x} + j \cdot \left(a \cdot c - y \cdot i\right)\right) + \left(t \cdot i - c \cdot z\right) \cdot b\\
\mathbf{elif}\;b \le -1.758338690148164602644415584605192188924 \cdot 10^{-166}:\\
\;\;\;\;\left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) + \left(\left(-y \cdot \left(j \cdot i\right)\right) + c \cdot \left(j \cdot a\right)\right)\right) + \left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{elif}\;b \le 5.504662105172458263088453427769459127963 \cdot 10^{-251}:\\
\;\;\;\;\left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right) + \left(\left(\left(j \cdot c\right) \cdot a + \left(-\left(y \cdot j\right) \cdot i\right)\right) + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\mathbf{elif}\;b \le 6.454516511442097649947162038850472776326 \cdot 10^{-203}:\\
\;\;\;\;\left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) + \left(\left(-y \cdot \left(j \cdot i\right)\right) + c \cdot \left(j \cdot a\right)\right)\right) + \left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{elif}\;b \le 6.877712242978713089253008401315914491855 \cdot 10^{-78}:\\
\;\;\;\;\left(\left(t \cdot b\right) \cdot i - \sqrt[3]{z} \cdot \left(\left(c \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) \cdot b\right)\right) + \left(j \cdot \left(a \cdot c - y \cdot i\right) + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\mathbf{elif}\;b \le 60816444.42864446341991424560546875:\\
\;\;\;\;\left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) + \left(\left(-y \cdot \left(j \cdot i\right)\right) + c \cdot \left(j \cdot a\right)\right)\right) + \left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t \cdot i - c \cdot z\right) \cdot \sqrt{b}\right) \cdot \sqrt{b} + \left(j \cdot \left(a \cdot c - y \cdot i\right) + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r681538 = x;
double r681539 = y;
double r681540 = z;
double r681541 = r681539 * r681540;
double r681542 = t;
double r681543 = a;
double r681544 = r681542 * r681543;
double r681545 = r681541 - r681544;
double r681546 = r681538 * r681545;
double r681547 = b;
double r681548 = c;
double r681549 = r681548 * r681540;
double r681550 = i;
double r681551 = r681542 * r681550;
double r681552 = r681549 - r681551;
double r681553 = r681547 * r681552;
double r681554 = r681546 - r681553;
double r681555 = j;
double r681556 = r681548 * r681543;
double r681557 = r681539 * r681550;
double r681558 = r681556 - r681557;
double r681559 = r681555 * r681558;
double r681560 = r681554 + r681559;
return r681560;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r681561 = b;
double r681562 = -1.8858202887214527e+95;
bool r681563 = r681561 <= r681562;
double r681564 = y;
double r681565 = z;
double r681566 = r681564 * r681565;
double r681567 = a;
double r681568 = t;
double r681569 = r681567 * r681568;
double r681570 = r681566 - r681569;
double r681571 = x;
double r681572 = r681570 * r681571;
double r681573 = cbrt(r681572);
double r681574 = r681573 * r681573;
double r681575 = r681574 * r681573;
double r681576 = j;
double r681577 = c;
double r681578 = r681567 * r681577;
double r681579 = i;
double r681580 = r681564 * r681579;
double r681581 = r681578 - r681580;
double r681582 = r681576 * r681581;
double r681583 = r681575 + r681582;
double r681584 = r681568 * r681579;
double r681585 = r681577 * r681565;
double r681586 = r681584 - r681585;
double r681587 = r681586 * r681561;
double r681588 = r681583 + r681587;
double r681589 = -1.7583386901481646e-166;
bool r681590 = r681561 <= r681589;
double r681591 = r681565 * r681571;
double r681592 = r681591 * r681564;
double r681593 = r681571 * r681568;
double r681594 = r681593 * r681567;
double r681595 = r681592 - r681594;
double r681596 = r681576 * r681579;
double r681597 = r681564 * r681596;
double r681598 = -r681597;
double r681599 = r681576 * r681567;
double r681600 = r681577 * r681599;
double r681601 = r681598 + r681600;
double r681602 = r681595 + r681601;
double r681603 = r681568 * r681561;
double r681604 = r681603 * r681579;
double r681605 = r681577 * r681561;
double r681606 = r681605 * r681565;
double r681607 = r681604 - r681606;
double r681608 = r681602 + r681607;
double r681609 = 5.504662105172458e-251;
bool r681610 = r681561 <= r681609;
double r681611 = r681576 * r681577;
double r681612 = r681611 * r681567;
double r681613 = r681564 * r681576;
double r681614 = r681613 * r681579;
double r681615 = -r681614;
double r681616 = r681612 + r681615;
double r681617 = r681616 + r681572;
double r681618 = r681607 + r681617;
double r681619 = 6.454516511442098e-203;
bool r681620 = r681561 <= r681619;
double r681621 = 6.877712242978713e-78;
bool r681622 = r681561 <= r681621;
double r681623 = cbrt(r681565);
double r681624 = r681623 * r681623;
double r681625 = r681577 * r681624;
double r681626 = r681625 * r681561;
double r681627 = r681623 * r681626;
double r681628 = r681604 - r681627;
double r681629 = r681582 + r681572;
double r681630 = r681628 + r681629;
double r681631 = 60816444.42864446;
bool r681632 = r681561 <= r681631;
double r681633 = sqrt(r681561);
double r681634 = r681586 * r681633;
double r681635 = r681634 * r681633;
double r681636 = r681635 + r681629;
double r681637 = r681632 ? r681608 : r681636;
double r681638 = r681622 ? r681630 : r681637;
double r681639 = r681620 ? r681608 : r681638;
double r681640 = r681610 ? r681618 : r681639;
double r681641 = r681590 ? r681608 : r681640;
double r681642 = r681563 ? r681588 : r681641;
return r681642;
}




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 | 19.7 |
| Herbie | 9.2 |
if b < -1.8858202887214527e+95Initial program 6.4
Simplified6.4
rmApplied add-cube-cbrt6.6
if -1.8858202887214527e+95 < b < -1.7583386901481646e-166 or 5.504662105172458e-251 < b < 6.454516511442098e-203 or 6.877712242978713e-78 < b < 60816444.42864446Initial program 13.0
Simplified13.0
Taylor expanded around inf 10.0
Simplified10.1
Taylor expanded around inf 10.9
Simplified9.8
rmApplied associate-*r*10.1
rmApplied sub-neg10.1
Applied distribute-lft-in10.1
Simplified10.3
Simplified9.3
if -1.7583386901481646e-166 < b < 5.504662105172458e-251Initial program 17.3
Simplified17.3
Taylor expanded around inf 10.9
Simplified10.9
rmApplied sub-neg10.9
Applied distribute-lft-in10.9
Simplified11.9
Simplified10.8
if 6.454516511442098e-203 < b < 6.877712242978713e-78Initial program 15.8
Simplified15.8
Taylor expanded around inf 10.4
Simplified10.4
rmApplied add-cube-cbrt10.5
Applied associate-*r*10.5
Simplified11.5
if 60816444.42864446 < b Initial program 7.2
Simplified7.2
rmApplied add-sqr-sqrt7.4
Applied associate-*r*7.4
Simplified7.4
Final simplification9.2
herbie shell --seed 2019194
(FPCore (x y z t a b c i j)
:name "Data.Colour.Matrix:determinant from colour-2.3.3, A"
:herbie-target
(if (< x -1.469694296777705e-64) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2.0) (pow (* t i) 2.0))) (+ (* 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.0) (pow (* t i) 2.0))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* t i)))) (* j (- (* c a) (* y i)))))