34 #ifndef EIGEN_COLPIVOTINGHOUSEHOLDERQR_LAPACKE_H    35 #define EIGEN_COLPIVOTINGHOUSEHOLDERQR_LAPACKE_H    41 #define EIGEN_LAPACKE_QR_COLPIV(EIGTYPE, LAPACKE_TYPE, LAPACKE_PREFIX, EIGCOLROW, LAPACKE_COLROW) \    42 template<> template<typename InputType> inline \    43 ColPivHouseholderQR<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW, Dynamic, Dynamic> >& \    44 ColPivHouseholderQR<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW, Dynamic, Dynamic> >::compute( \    45               const EigenBase<InputType>& matrix) \    49   typedef Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW, Dynamic, Dynamic> MatrixType; \    50   typedef MatrixType::RealScalar RealScalar; \    51   Index rows = matrix.rows();\    52   Index cols = matrix.cols();\    55   Index size = m_qr.diagonalSize();\    56   m_hCoeffs.resize(size);\    58   m_colsTranspositions.resize(cols);\    61   m_nonzero_pivots = 0; \    62   m_maxpivot = RealScalar(0);\    63   m_colsPermutation.resize(cols); \    64   m_colsPermutation.indices().setZero(); \    66   lapack_int lda = internal::convert_index<lapack_int,Index>(m_qr.outerStride()); \    67   lapack_int matrix_order = LAPACKE_COLROW; \    68   LAPACKE_##LAPACKE_PREFIX##geqp3( matrix_order, internal::convert_index<lapack_int,Index>(rows), internal::convert_index<lapack_int,Index>(cols), \    69                               (LAPACKE_TYPE*)m_qr.data(), lda, (lapack_int*)m_colsPermutation.indices().data(), (LAPACKE_TYPE*)m_hCoeffs.data()); \    70   m_isInitialized = true; \    71   m_maxpivot=m_qr.diagonal().cwiseAbs().maxCoeff(); \    72   m_hCoeffs.adjointInPlace(); \    73   RealScalar premultiplied_threshold = abs(m_maxpivot) * threshold(); \    74   lapack_int *perm = m_colsPermutation.indices().data(); \    75   for(Index i=0;i<size;i++) { \    76     m_nonzero_pivots += (abs(m_qr.coeff(i,i)) > premultiplied_threshold);\    78   for(Index i=0;i<cols;i++) perm[i]--;\    97 #endif // EIGEN_COLPIVOTINGHOUSEHOLDERQR_LAPACKE_H #define lapack_complex_float
#define EIGEN_LAPACKE_QR_COLPIV(EIGTYPE, LAPACKE_TYPE, LAPACKE_PREFIX, EIGCOLROW, LAPACKE_COLROW)
std::complex< float > scomplex
std::complex< double > dcomplex
#define lapack_complex_double