Add template to specify QR permutation index type, Fix ColPivHouseholderQR Lapacke bindings

This commit is contained in:
Charles Schlosser
2023-01-11 15:57:28 +00:00
parent 9463fc95f4
commit be7791e097
10 changed files with 309 additions and 252 deletions

View File

@@ -362,9 +362,9 @@ template<typename Derived> class MatrixBase
/////////// QR module ///////////
inline const HouseholderQR<PlainObject> householderQr() const;
inline const ColPivHouseholderQR<PlainObject> colPivHouseholderQr() const;
inline const FullPivHouseholderQR<PlainObject> fullPivHouseholderQr() const;
inline const CompleteOrthogonalDecomposition<PlainObject> completeOrthogonalDecomposition() const;
template<typename StorageIndex = DefaultStorageIndex> inline const ColPivHouseholderQR<PlainObject, StorageIndex> colPivHouseholderQr() const;
template<typename StorageIndex = int> inline const FullPivHouseholderQR<PlainObject, StorageIndex> fullPivHouseholderQr() const;
template<typename StorageIndex = DefaultStorageIndex> inline const CompleteOrthogonalDecomposition<PlainObject, StorageIndex> completeOrthogonalDecomposition() const;
/////////// Eigenvalues module ///////////

View File

@@ -252,15 +252,22 @@ template<typename ExpressionType, int Direction> class VectorwiseOp;
template<typename MatrixType,int RowFactor,int ColFactor> class Replicate;
template<typename MatrixType, int Direction = BothDirections> class Reverse;
#if defined(EIGEN_USE_LAPACKE)
// Lapacke interface requires StorageIndex to be lapack_int
typedef lapack_int DefaultStorageIndex;
#else
typedef int DefaultStorageIndex;
#endif
template<typename MatrixType> class FullPivLU;
template<typename MatrixType> class PartialPivLU;
namespace internal {
template<typename MatrixType> struct inverse_impl;
}
template<typename MatrixType> class HouseholderQR;
template<typename MatrixType> class ColPivHouseholderQR;
template<typename MatrixType> class FullPivHouseholderQR;
template<typename MatrixType> class CompleteOrthogonalDecomposition;
template<typename MatrixType, typename StorageIndex = DefaultStorageIndex> class ColPivHouseholderQR;
template<typename MatrixType, typename StorageIndex = int> class FullPivHouseholderQR;
template<typename MatrixType, typename StorageIndex = DefaultStorageIndex> class CompleteOrthogonalDecomposition;
template<typename MatrixType> class SVDBase;
template<typename MatrixType, int Options = 0> class JacobiSVD;
template<typename MatrixType, int Options = 0> class BDCSVD;