diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-11-13 21:16:53 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-11-13 21:16:53 +0100 |
commit | 8496f86f84a78e1d8b2424ad5048c5fdab37f58f (patch) | |
tree | 36590fde0fd271fcccc3c8a31a605dc2cdc44939 /test/qr_colpivoting.cpp | |
parent | 002e5b6db6b89d3e2543a17f031121c7d97a2f33 (diff) |
Enable CompleteOrthogonalDecomposition::pseudoInverse with non-square fixed-size matrices.
Diffstat (limited to 'test/qr_colpivoting.cpp')
-rw-r--r-- | test/qr_colpivoting.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/test/qr_colpivoting.cpp b/test/qr_colpivoting.cpp index a563b5470..06f16438f 100644 --- a/test/qr_colpivoting.cpp +++ b/test/qr_colpivoting.cpp @@ -70,10 +70,11 @@ void cod_fixedsize() { Cols = MatrixType::ColsAtCompileTime }; typedef typename MatrixType::Scalar Scalar; + typedef CompleteOrthogonalDecomposition<Matrix<Scalar, Rows, Cols> > COD; int rank = internal::random<int>(1, (std::min)(int(Rows), int(Cols)) - 1); Matrix<Scalar, Rows, Cols> matrix; createRandomPIMatrixOfRank(rank, Rows, Cols, matrix); - CompleteOrthogonalDecomposition<Matrix<Scalar, Rows, Cols> > cod(matrix); + COD cod(matrix); VERIFY(rank == cod.rank()); VERIFY(Cols - cod.rank() == cod.dimensionOfKernel()); VERIFY(cod.isInjective() == (rank == Rows)); @@ -90,6 +91,9 @@ void cod_fixedsize() { JacobiSVD<MatrixType> svd(matrix, ComputeFullU | ComputeFullV); Matrix<Scalar, Cols, Cols2> svd_solution = svd.solve(rhs); VERIFY_IS_APPROX(cod_solution, svd_solution); + + typename Inverse<COD>::PlainObject pinv = cod.pseudoInverse(); + VERIFY_IS_APPROX(cod_solution, pinv * rhs); } template<typename MatrixType> void qr() |