33 #ifndef EIGEN_LLT_MKL_H    34 #define EIGEN_LLT_MKL_H    45 #define EIGEN_MKL_LLT(EIGTYPE, MKLTYPE, MKLPREFIX) \    46 template<> struct mkl_llt<EIGTYPE> \    48   template<typename MatrixType> \    49   static inline typename MatrixType::Index potrf(MatrixType& m, char uplo) \    51     lapack_int matrix_order; \    52     lapack_int size, lda, info, StorageOrder; \    54     eigen_assert(m.rows()==m.cols()); \    57     StorageOrder = MatrixType::Flags&RowMajorBit?RowMajor:ColMajor; \    58     matrix_order = StorageOrder==RowMajor ? LAPACK_ROW_MAJOR : LAPACK_COL_MAJOR; \    59     a = &(m.coeffRef(0,0)); \    60     lda = m.outerStride(); \    62     info = LAPACKE_##MKLPREFIX##potrf( matrix_order, uplo, size, (MKLTYPE*)a, lda ); \    63     info = (info==0) ? Success : NumericalIssue; \    67 template<> struct llt_inplace<EIGTYPE, Lower> \    69   template<typename MatrixType> \    70   static typename MatrixType::Index blocked(MatrixType& m) \    72     return mkl_llt<EIGTYPE>::potrf(m, 'L'); \    74   template<typename MatrixType, typename VectorType> \    75   static typename MatrixType::Index rankUpdate(MatrixType& mat, const VectorType& vec, const typename MatrixType::RealScalar& sigma) \    76   { return Eigen::internal::llt_rank_update_lower(mat, vec, sigma); } \    78 template<> struct llt_inplace<EIGTYPE, Upper> \    80   template<typename MatrixType> \    81   static typename MatrixType::Index blocked(MatrixType& m) \    83     return mkl_llt<EIGTYPE>::potrf(m, 'U'); \    85   template<typename MatrixType, typename VectorType> \    86   static typename MatrixType::Index rankUpdate(MatrixType& mat, const VectorType& vec, const typename MatrixType::RealScalar& sigma) \    88     Transpose<MatrixType> matt(mat); \    89     return llt_inplace<EIGTYPE, Lower>::rankUpdate(matt, vec.conjugate(), sigma); \   102 #endif // EIGEN_LLT_MKL_H #define EIGEN_MKL_LLT(EIGTYPE, MKLTYPE, MKLPREFIX)