24#define ALWAYS_USE_TEMPLATE_PAR_AS_FUN_PAR
25#ifndef ALWAYS_USE_TEMPLATE_PAR_AS_FUN_PAR
27template <
class M,
class X>
31template <
class M,
class X>
38 return mi.ac(0, 0) * mi.ac(1, 1) - mi.ac(0, 1) * mi.ac(1, 0);
40 return mi.ac(0, 0) * mi.ac(1, 1) * mi.ac(2, 2) +
41 mi.ac(0, 2) * mi.ac(1, 0) * mi.ac(2, 1) +
42 mi.ac(0, 1) * mi.ac(1, 2) * mi.ac(2, 0) -
43 mi.ac(0, 2) * mi.ac(1, 1) * mi.ac(2, 0) -
44 mi.ac(0, 0) * mi.ac(1, 2) * mi.ac(2, 1) -
45 mi.ac(0, 1) * mi.ac(1, 0) * mi.ac(2, 2);
48 for (
long nr = 0; nr < q; nr++) {
51 for (
long nr1 = nr; nr1 < q; nr1++) {
52 if (
fabs(mi.ac(nr1, nr)) > d) {
53 d =
fabs(mi.ac(nr1, nr));
61 return koef * mi.ac(nmax, nr);
64 for (
long nc = nr; nc < q; nc++) {
66 mi.ac(nr, nc) = mi.ac(nmax, nc);
73 for (
long nr1 = nr + 1; nr1 < q; nr1++) {
74 X k(mi.ac(nr1, nr) / t);
80 for (
long nc = nr; nc < q; nc++) {
81 mi.ac(nr1, nc) -= k * mi.ac(nr, nc);
84 for (
long nc = nr; nc < q; nc++) {
X abstract_determinant(M &mi, long q, X)
DoubleAc fabs(const DoubleAc &f)