\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 -3.725138153910988730936648146499484432334 \cdot 10^{76}:\\
\;\;\;\;\left(j \cdot \left(a \cdot c - y \cdot i\right) + \left(y \cdot \left(x \cdot z\right) - \left(x \cdot a\right) \cdot t\right)\right) + \left(t \cdot i - c \cdot z\right) \cdot b\\
\mathbf{elif}\;b \le -6.544881131462384959170183205645892072607 \cdot 10^{-94}:\\
\;\;\;\;\left(\left(\left(-\left(y \cdot j\right) \cdot i\right) + c \cdot \left(j \cdot a\right)\right) + x \cdot \left(y \cdot z - a \cdot t\right)\right) + \left(\left(t \cdot b\right) \cdot i - z \cdot \left(c \cdot b\right)\right)\\
\mathbf{elif}\;b \le -6.651701605731016043167399068212918503952 \cdot 10^{-134}:\\
\;\;\;\;\left(j \cdot \left(a \cdot c - y \cdot i\right) + x \cdot \left(y \cdot z - a \cdot t\right)\right) + \left(\sqrt[3]{t} \cdot \left(\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(i \cdot b\right)\right) - z \cdot \left(c \cdot b\right)\right)\\
\mathbf{elif}\;b \le -2.965523078545726390551901853798335915023 \cdot 10^{-204}:\\
\;\;\;\;\left(t \cdot \left(i \cdot b\right) - z \cdot \left(c \cdot b\right)\right) + \left(\left(\left(y \cdot x\right) \cdot z - a \cdot \left(t \cdot x\right)\right) + j \cdot \left(a \cdot c - y \cdot i\right)\right)\\
\mathbf{elif}\;b \le 4.944497479843419684921438322625378474248 \cdot 10^{-214}:\\
\;\;\;\;\left(\left(\left(-\left(y \cdot j\right) \cdot i\right) + c \cdot \left(j \cdot a\right)\right) + x \cdot \left(y \cdot z - a \cdot t\right)\right) + \left(\left(t \cdot b\right) \cdot i - z \cdot \left(c \cdot b\right)\right)\\
\mathbf{elif}\;b \le 2.700938591604041463230149378622378934965 \cdot 10^{-81}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - a \cdot t\right) + \left(\left(j \cdot c\right) \cdot a + y \cdot \left(i \cdot \left(-j\right)\right)\right)\right) + \left(t \cdot \left(i \cdot b\right) - z \cdot \left(c \cdot b\right)\right)\\
\mathbf{elif}\;b \le 1.75607632423487995539322255985778127624 \cdot 10^{80}:\\
\;\;\;\;\left(t \cdot \left(i \cdot b\right) - z \cdot \left(c \cdot b\right)\right) + \left(\left(\left(y \cdot x\right) \cdot z - a \cdot \left(t \cdot x\right)\right) + j \cdot \left(a \cdot c - y \cdot i\right)\right)\\
\mathbf{elif}\;b \le 2.149640478734169986509788916183067553901 \cdot 10^{89}:\\
\;\;\;\;\left(\left(\left(-\left(y \cdot j\right) \cdot i\right) + c \cdot \left(j \cdot a\right)\right) + x \cdot \left(y \cdot z - a \cdot t\right)\right) + \left(\left(t \cdot b\right) \cdot i - z \cdot \left(c \cdot b\right)\right)\\
\mathbf{elif}\;b \le 5.591290094756511996649968865827829365135 \cdot 10^{130}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - a \cdot t\right) + \left(\left(j \cdot c\right) \cdot a + y \cdot \left(i \cdot \left(-j\right)\right)\right)\right) + \left(t \cdot \left(i \cdot b\right) - z \cdot \left(c \cdot b\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(j \cdot \left(a \cdot c - y \cdot i\right) + \left(y \cdot \left(x \cdot z\right) - \left(x \cdot a\right) \cdot t\right)\right) + \left(t \cdot i - c \cdot z\right) \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r638506 = x;
double r638507 = y;
double r638508 = z;
double r638509 = r638507 * r638508;
double r638510 = t;
double r638511 = a;
double r638512 = r638510 * r638511;
double r638513 = r638509 - r638512;
double r638514 = r638506 * r638513;
double r638515 = b;
double r638516 = c;
double r638517 = r638516 * r638508;
double r638518 = i;
double r638519 = r638510 * r638518;
double r638520 = r638517 - r638519;
double r638521 = r638515 * r638520;
double r638522 = r638514 - r638521;
double r638523 = j;
double r638524 = r638516 * r638511;
double r638525 = r638507 * r638518;
double r638526 = r638524 - r638525;
double r638527 = r638523 * r638526;
double r638528 = r638522 + r638527;
return r638528;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r638529 = b;
double r638530 = -3.725138153910989e+76;
bool r638531 = r638529 <= r638530;
double r638532 = j;
double r638533 = a;
double r638534 = c;
double r638535 = r638533 * r638534;
double r638536 = y;
double r638537 = i;
double r638538 = r638536 * r638537;
double r638539 = r638535 - r638538;
double r638540 = r638532 * r638539;
double r638541 = x;
double r638542 = z;
double r638543 = r638541 * r638542;
double r638544 = r638536 * r638543;
double r638545 = r638541 * r638533;
double r638546 = t;
double r638547 = r638545 * r638546;
double r638548 = r638544 - r638547;
double r638549 = r638540 + r638548;
double r638550 = r638546 * r638537;
double r638551 = r638534 * r638542;
double r638552 = r638550 - r638551;
double r638553 = r638552 * r638529;
double r638554 = r638549 + r638553;
double r638555 = -6.544881131462385e-94;
bool r638556 = r638529 <= r638555;
double r638557 = r638536 * r638532;
double r638558 = r638557 * r638537;
double r638559 = -r638558;
double r638560 = r638532 * r638533;
double r638561 = r638534 * r638560;
double r638562 = r638559 + r638561;
double r638563 = r638536 * r638542;
double r638564 = r638533 * r638546;
double r638565 = r638563 - r638564;
double r638566 = r638541 * r638565;
double r638567 = r638562 + r638566;
double r638568 = r638546 * r638529;
double r638569 = r638568 * r638537;
double r638570 = r638534 * r638529;
double r638571 = r638542 * r638570;
double r638572 = r638569 - r638571;
double r638573 = r638567 + r638572;
double r638574 = -6.651701605731016e-134;
bool r638575 = r638529 <= r638574;
double r638576 = r638540 + r638566;
double r638577 = cbrt(r638546);
double r638578 = r638577 * r638577;
double r638579 = r638537 * r638529;
double r638580 = r638578 * r638579;
double r638581 = r638577 * r638580;
double r638582 = r638581 - r638571;
double r638583 = r638576 + r638582;
double r638584 = -2.9655230785457264e-204;
bool r638585 = r638529 <= r638584;
double r638586 = r638546 * r638579;
double r638587 = r638586 - r638571;
double r638588 = r638536 * r638541;
double r638589 = r638588 * r638542;
double r638590 = r638546 * r638541;
double r638591 = r638533 * r638590;
double r638592 = r638589 - r638591;
double r638593 = r638592 + r638540;
double r638594 = r638587 + r638593;
double r638595 = 4.94449747984342e-214;
bool r638596 = r638529 <= r638595;
double r638597 = 2.7009385916040415e-81;
bool r638598 = r638529 <= r638597;
double r638599 = r638532 * r638534;
double r638600 = r638599 * r638533;
double r638601 = -r638532;
double r638602 = r638537 * r638601;
double r638603 = r638536 * r638602;
double r638604 = r638600 + r638603;
double r638605 = r638566 + r638604;
double r638606 = r638605 + r638587;
double r638607 = 1.75607632423488e+80;
bool r638608 = r638529 <= r638607;
double r638609 = 2.14964047873417e+89;
bool r638610 = r638529 <= r638609;
double r638611 = 5.591290094756512e+130;
bool r638612 = r638529 <= r638611;
double r638613 = r638612 ? r638606 : r638554;
double r638614 = r638610 ? r638573 : r638613;
double r638615 = r638608 ? r638594 : r638614;
double r638616 = r638598 ? r638606 : r638615;
double r638617 = r638596 ? r638573 : r638616;
double r638618 = r638585 ? r638594 : r638617;
double r638619 = r638575 ? r638583 : r638618;
double r638620 = r638556 ? r638573 : r638619;
double r638621 = r638531 ? r638554 : r638620;
return r638621;
}




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.4 |
|---|---|
| Target | 19.4 |
| Herbie | 9.7 |
if b < -3.725138153910989e+76 or 5.591290094756512e+130 < b Initial program 7.4
Simplified7.4
Taylor expanded around inf 7.2
Simplified8.1
if -3.725138153910989e+76 < b < -6.544881131462385e-94 or -2.9655230785457264e-204 < b < 4.94449747984342e-214 or 1.75607632423488e+80 < b < 2.14964047873417e+89Initial program 15.0
Simplified15.0
Taylor expanded around inf 10.5
Simplified10.5
Taylor expanded around inf 10.5
Simplified10.5
rmApplied sub-neg10.5
Applied distribute-lft-in10.5
Simplified10.5
Simplified9.7
if -6.544881131462385e-94 < b < -6.651701605731016e-134Initial program 13.4
Simplified13.4
Taylor expanded around inf 9.3
Simplified9.3
rmApplied add-cube-cbrt9.4
Applied associate-*r*9.4
if -6.651701605731016e-134 < b < -2.9655230785457264e-204 or 2.7009385916040415e-81 < b < 1.75607632423488e+80Initial program 12.3
Simplified12.3
Taylor expanded around inf 10.4
Simplified10.4
Taylor expanded around inf 10.9
Simplified10.0
if 4.94449747984342e-214 < b < 2.7009385916040415e-81 or 2.14964047873417e+89 < b < 5.591290094756512e+130Initial program 13.5
Simplified13.5
Taylor expanded around inf 10.8
Simplified10.8
rmApplied sub-neg10.8
Applied distribute-lft-in10.8
Simplified11.3
Simplified11.8
Final simplification9.7
herbie shell --seed 2019196
(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)))))