Compact routines are subject to a set of numerical limitations. They also skip most of the checks presented in regular BLAS and LAPACK routines in order to provide effective vectorization. The following limitations apply to at least one compact routine.
Complex division: BLAS and LAPACK compact routines rely on a naïve method for complex division that does not protect the solution against overflow, underflow, or loss of precision.
Error checking: the LAPACK compact routines skip error checking for performance reasons ; therefore, the user is responsible for passing correct parameters. There are no checks for incorrect matrices (such as singular for LU, non-positive-definite for Cholesky) - it is always assumed that the algorithm for the input matrix can be completed without error.
No pivoting: the generic LU factorization routine,
?getrf, calculates the factorization using partial pivoting. However, because pivoting includes comparisons which cannot be effectively vectorized, only non-pivoting versions of LU
mkl_?getrfnp_compactand Inverse from LU (
mkl_?getrinp_compact) are provided as compact routines.
Matrices scaled near underflow/overflow: the LAPACK compact routines do not provide safe handling for values near underflow/overflow. This means that Compact routines may return incorrect results for such matrices. This limitation is related to compact routine for QR:
It is the responsibility of the user to ensure that the input matrices can be factorized, inverted, and/or solved given these numerical limitations.