template<typename MatrixQR, typename HCoeffs> \
                                       typename MatrixQR::Index maxBlockSize=32, \
                                       EIGTYPE* tempData = 0) \
{ \
  lapack_int m = mat.rows(); \
  lapack_int n = mat.cols(); \
  lapack_int lda = mat.outerStride(); \
  lapack_int matrix_order = (MatrixQR::IsRowMajor) ? LAPACK_ROW_MAJOR : LAPACK_COL_MAJOR; \
  LAPACKE_##MKLPREFIX##geqrf( matrix_order, m, n, (MKLTYPE*)mat.data(), lda, (MKLTYPE*)hCoeffs.data()); \
  hCoeffs.adjointInPlace(); \
\
}
void householder_qr_inplace_blocked(MatrixQR &mat, HCoeffs &hCoeffs, typename MatrixQR::Index maxBlockSize=32, typename MatrixQR::Scalar *tempData=0)