Skip to content

Commit 96b3f82

Browse files
Anton Leykind-torrance
authored andcommitted
Fixed a bug in a LAPACK wrapper
1 parent fffb597 commit 96b3f82

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

M2/Macaulay2/e/lapack.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2166,13 +2166,17 @@ bool Lapack::eigenvectors(const DMatRR *A,
21662166
}
21672167
else
21682168
{
2169-
2170-
///// YYY REVIEW THIS...!
21712169
// Make the complex arrays of eigvals and eigvecs
21722170
eigvals->resize(size, 1);
21732171
eigvecs->resize(size, size);
21742172
// DMatCC::ElementType *elems = eigvals->rowMajorArray();
21752173
double* eigenLoc = eigen;
2174+
for (int i = 0; i < size; ++i) {
2175+
for (int j = 0; j < size; ++j) {
2176+
std::cout << eigen[i + j * size] << " ";
2177+
}
2178+
std::cout << std::endl;
2179+
}
21762180
for (int j = 0; j < size; j++, eigenLoc += size)
21772181
{
21782182
eigvals->ring().set_from_doubles(eigvals->entry(j,0), real[j], imag[j]);
@@ -2191,9 +2195,9 @@ bool Lapack::eigenvectors(const DMatRR *A,
21912195
for (int i = 0; i < size; ++i)
21922196
{
21932197
eigvecs->ring().set_from_doubles(eigvecs->entry(i,j),
2194-
eigen[i], eigen[size + i]);
2198+
eigenLoc[i], eigenLoc[size + i]);
21952199
eigvecs->ring().set_from_doubles(eigvecs->entry(i,j+1),
2196-
eigen[i], - eigen[size + i]);
2200+
eigenLoc[i], - eigenLoc[size + i]);
21972201
}
21982202
}
21992203
}

M2/Macaulay2/tests/normal/000-core.m2

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,8 +1394,14 @@ M = matrix{{1.0,1.0},{0.0,1.0}}
13941394
eigenvalues M
13951395
eigenvectors M
13961396

1397+
M0 = matrix{{1_RR,-1},{1,1}};
1398+
M = M0++M0;
1399+
(D, P) = eigenvectors M
1400+
1401+
13971402
M = matrix{{1.0, 2.0}, {2.0, 1.0}}
13981403
eigenvectors(M, Hermitian=>true)
1404+
assert( 1e-10 > norm(M*P - P * diagonalMatrix(D)))
13991405

14001406
M = matrix{{1.0, 2.0}, {5.0, 7.0}}
14011407
(eigvals, eigvecs) = eigenvectors M

0 commit comments

Comments
 (0)