aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2009-11-18 12:41:24 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2009-11-18 12:41:24 -0500
commit8860203e6a29d7cc5f19097ca57aa458ee449777 (patch)
treeaaec08d968aa74b9e8dbaf8bf0cc227501cd92bc /Eigen
parent94c706d04fe74cfc6917f6ac057e0c3ca98796c7 (diff)
fix stuff after the PermutationMatrix changes.
I still have JacobiSVD errors when cols>rows
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/QR/ColPivHouseholderQR.h2
-rw-r--r--Eigen/src/SVD/JacobiSVD.h9
2 files changed, 4 insertions, 7 deletions
diff --git a/Eigen/src/QR/ColPivHouseholderQR.h b/Eigen/src/QR/ColPivHouseholderQR.h
index e764af529..4e983684f 100644
--- a/Eigen/src/QR/ColPivHouseholderQR.h
+++ b/Eigen/src/QR/ColPivHouseholderQR.h
@@ -314,7 +314,7 @@ ColPivHouseholderQR<MatrixType>& ColPivHouseholderQR<MatrixType>::compute(const
m_cols_permutation.setIdentity(cols);
for(int k = 0; k < size; ++k)
- m_cols_permutation.applyTranspositionOnTheLeft(k, cols_transpositions.coeff(k));
+ m_cols_permutation.applyTranspositionOnTheRight(k, cols_transpositions.coeff(k));
m_det_pq = (number_of_transpositions%2) ? -1 : 1;
m_isInitialized = true;
diff --git a/Eigen/src/SVD/JacobiSVD.h b/Eigen/src/SVD/JacobiSVD.h
index 927ef6591..2f7ebb160 100644
--- a/Eigen/src/SVD/JacobiSVD.h
+++ b/Eigen/src/SVD/JacobiSVD.h
@@ -236,9 +236,8 @@ struct ei_svd_precondition_if_more_rows_than_cols<MatrixType, Options, true>
FullPivHouseholderQR<MatrixType> qr(matrix);
work_matrix = qr.matrixQR().block(0,0,diagSize,diagSize).template triangularView<UpperTriangular>();
if(ComputeU) svd.m_matrixU = qr.matrixQ();
- if(ComputeV)
- for(int i = 0; i < cols; i++)
- svd.m_matrixV.coeffRef(qr.colsPermutation().coeff(i),i) = Scalar(1);
+ if(ComputeV) svd.m_matrixV = qr.colsPermutation();
+
return true;
}
else return false;
@@ -281,9 +280,7 @@ struct ei_svd_precondition_if_more_cols_than_rows<MatrixType, Options, true>
FullPivHouseholderQR<TransposeTypeWithSameStorageOrder> qr(matrix.adjoint());
work_matrix = qr.matrixQR().block(0,0,diagSize,diagSize).template triangularView<UpperTriangular>().adjoint();
if(ComputeV) svd.m_matrixV = qr.matrixQ();
- if(ComputeU)
- for(int i = 0; i < rows; i++)
- svd.m_matrixU.coeffRef(qr.colsPermutation().coeff(i),i) = Scalar(1);
+ if(ComputeU) svd.m_matrixU = qr.colsPermutation();
return true;
}
else return false;