35template <
class Matrix,
unsigned int n,
unsigned int idim>
36bool Dfinv(Matrix& rhs,
unsigned int* ir) {
38 if (idim < n || n <= 0 || n==1) {
43 typename Matrix::value_type*
a = rhs.Array();
46 static unsigned int nxch, i, j, k, m, ij;
47 static unsigned int im2, nm1, nmi;
48 static typename Matrix::value_type s31, s34,
ti;
58 a[idim + 2] = -
a[(idim << 1) + 2] * (
a[idim + 1] *
a[idim + 2]);
59 a[(idim << 1) + 1] = -
a[(idim << 1) + 1];
62 for (i = 3; i <= n; ++i) {
63 const unsigned int ii = i * idim;
64 const unsigned int iii = i + ii;
65 const unsigned int imi = ii - idim;
66 const unsigned int iimi = i + imi;
68 for (j = 1; j <= im2; ++j) {
69 const unsigned int ji = j * idim;
70 const unsigned int jii = j + ii;
72 for (k = j; k <= im2; ++k) {
73 s31 +=
a[k + ji] *
a[i + k * idim];
74 a[jii] +=
a[j + (k + 1) * idim] *
a[k + 1 + ii];
76 a[i + ji] = -
a[iii] * (
a[i - 1 + ji] *
a[iimi] + s31);
79 a[iimi] = -
a[iii] * (
a[i - 1 + imi] *
a[iimi]);
85 for (i = 1; i <= nm1; ++i) {
86 const unsigned int ii = i * idim;
88 for (j = 1; j <= i; ++j) {
89 const unsigned int ji = j * idim;
90 const unsigned int iji = i + ji;
91 for (k = 1; k <= nmi; ++k) {
92 a[iji] +=
a[i + k + ji] *
a[i + (i + k) * idim];
96 for (j = 1; j <= nmi; ++j) {
97 const unsigned int ji = j * idim;
99 for (k = j; k <= nmi; ++k) {
100 s34 +=
a[i + k + ii + ji] *
a[i + (i + k) * idim];
102 a[i + ii + ji] = s34;
111 for (m = 1; m <= nxch; ++m) {
116 const unsigned int ii = i * idim;
117 const unsigned int ji = j * idim;
118 for (k = 1; k <= n; ++k) {
120 a[k + ii] =
a[k + ji];
bool Dfinv(Matrix &rhs, unsigned int *ir)
Definition: Dfinv.hh:36
EdbTrackP * ti[10]
Definition: RecDispMC_Profiles.C:54
void a()
Definition: check_aligned.C:59