34 #ifndef EIGEN_QR_MKL_H
35 #define EIGEN_QR_MKL_H
37 #include "../Core/util/MKL_support.h"
45 #define EIGEN_MKL_QR_NOPIV(EIGTYPE, MKLTYPE, MKLPREFIX) \
46 template<typename MatrixQR, typename HCoeffs> \
47 struct householder_qr_inplace_blocked<MatrixQR, HCoeffs, EIGTYPE, true> \
49 static void run(MatrixQR& mat, HCoeffs& hCoeffs, \
50 typename MatrixQR::Index = 32, \
51 typename MatrixQR::Scalar* = 0) \
53 lapack_int m = (lapack_int) mat.rows(); \
54 lapack_int n = (lapack_int) mat.cols(); \
55 lapack_int lda = (lapack_int) mat.outerStride(); \
56 lapack_int matrix_order = (MatrixQR::IsRowMajor) ? LAPACK_ROW_MAJOR : LAPACK_COL_MAJOR; \
57 LAPACKE_##MKLPREFIX##geqrf( matrix_order, m, n, (MKLTYPE*)mat.data(), lda, (MKLTYPE*)hCoeffs.data()); \
58 hCoeffs.adjointInPlace(); \
62 EIGEN_MKL_QR_NOPIV(
double,
double, d)
63 EIGEN_MKL_QR_NOPIV(
float,
float, s)
64 EIGEN_MKL_QR_NOPIV(dcomplex, MKL_Complex16, z)
65 EIGEN_MKL_QR_NOPIV(scomplex, MKL_Complex8, c)
71 #endif // EIGEN_QR_MKL_H
Definition: Eigen_Colamd.h:54