#include "Eigen/src/Core/util/MKL_support.h"
Go to the source code of this file.
Namespaces | |
namespace | Eigen |
iterative scaling algorithm to equilibrate rows and column norms in matrices | |
namespace | Eigen::internal |
Defines | |
#define | EIGEN_MKL_LU_PARTPIV(EIGTYPE, MKLTYPE, MKLPREFIX) |
#define EIGEN_MKL_LU_PARTPIV | ( | EIGTYPE, | |
MKLTYPE, | |||
MKLPREFIX | |||
) |
template<int StorageOrder> \ struct partial_lu_impl<EIGTYPE, StorageOrder, lapack_int> \ { \ /* \internal performs the LU decomposition in-place of the matrix represented */ \ static lapack_int blocked_lu(lapack_int rows, lapack_int cols, EIGTYPE* lu_data, lapack_int luStride, lapack_int* row_transpositions, lapack_int& nb_transpositions, lapack_int maxBlockSize=256) \ { \ EIGEN_UNUSED_VARIABLE(maxBlockSize);\ lapack_int matrix_order, first_zero_pivot; \ lapack_int m, n, lda, *ipiv, info; \ EIGTYPE* a; \ /* Set up parameters for ?getrf */ \ matrix_order = StorageOrder==RowMajor ? LAPACK_ROW_MAJOR : LAPACK_COL_MAJOR; \ lda = luStride; \ a = lu_data; \ ipiv = row_transpositions; \ m = rows; \ n = cols; \ nb_transpositions = 0; \ \ info = LAPACKE_##MKLPREFIX##getrf( matrix_order, m, n, (MKLTYPE*)a, lda, ipiv ); \ \ for(int i=0;i<m;i++) { ipiv[i]--; if (ipiv[i]!=i) nb_transpositions++; } \ \ eigen_assert(info >= 0); \ /* something should be done with nb_transpositions */ \ \ first_zero_pivot = info; \ return first_zero_pivot; \ } \ };
Definition at line 44 of file PartialPivLU_MKL.h.