58#define A(I, J) matrix[(I)*nVar + (J)]
59#define M(I, J) inverse[(I)*nVar + (J)]
62 for (
auto iVar = 0ul; iVar < nVar; iVar++)
63 for (
auto jVar = 0ul; jVar < nVar; jVar++)
M(iVar, jVar) = ScalarType(iVar == jVar);
66 for (
auto iVar = 1ul; iVar < nVar; iVar++) {
67 for (
auto jVar = 0ul; jVar < iVar; jVar++) {
70 const ScalarType weight =
A(iVar, jVar) /
A(jVar, jVar);
71 for (
auto kVar = jVar; kVar < nVar; kVar++)
A(iVar, kVar) -= weight *
A(jVar, kVar);
74 for (
auto kVar = 0ul; kVar <= jVar; kVar++)
M(iVar, kVar) -= weight *
M(jVar, kVar);
79 for (
auto iVar = nVar; iVar > 0ul;) {
81 for (
auto jVar = iVar + 1; jVar < nVar; jVar++)
82 for (
auto kVar = 0ul; kVar < nVar; kVar++)
M(iVar, kVar) -=
A(iVar, jVar) *
M(jVar, kVar);
86 for (
auto kVar = 0ul; kVar < nVar; kVar++)
M(iVar, kVar) /=
A(iVar, iVar);