Linear Equations

ScaLAPACK supports routines for the systems of equations with the following types of matrices:

  • general

  • general banded

  • general diagonally dominant-like banded (including general tridiagonal)

  • symmetric or Hermitian positive-definite

  • symmetric or Hermitian positive-definite banded

  • symmetric or Hermitian positive-definite tridiagonal

A diagonally dominant-like matrix is defined as a matrix for which it is known in advance that pivoting is not required in the LU factorization of this matrix.

For the above matrix types, the library includes routines for performing the following computations: factoring the matrix; equilibrating the matrix; solving a system of linear equations; estimating the condition number of a matrix; refining the solution of linear equations and computing its error bounds; inverting the matrix. Note that for some of the listed matrix types only part of the computational routines are provided (for example, routines that refine the solution are not provided for band or tridiagonal matrices). See Table “Computational Routines for Systems of Linear Equations” for full list of available routines.

To solve a particular problem, you can either call two or more computational routines or call a corresponding driver routine that combines several tasks in one call. Thus, to solve a system of linear equations with a general matrix, you can first call p?getrf(LU factorization) and then p?getrs(computing the solution). Then, you might wish to call p?gerfs to refine the solution and get the error bounds. Alternatively, you can just use the driver routine p?gesvx which performs all these tasks in one call.

Table “Computational Routines for Systems of Linear Equations” lists the ScaLAPACK computational routines for factorizing, equilibrating, and inverting matrices, estimating their condition numbers, solving systems of equations with real matrices, refining the solution, and estimating its error.

Computational Routines for Systems of Linear Equations
Matrix type, storage scheme Factorize matrix Equilibrate matrix Solve system Condition number Estimate error Invert matrix
general (partial pivoting) p?getrf p?geequ p?getrs p?gecon p?gerfs p?getri
general band (partial pivoting) p?gbtrf   p?gbtrs      
general band (no pivoting) p?dbtrf   p?dbtrs      
general tridiagonal (no pivoting) p?dttrf   p?dttrs      
symmetric/Hermitian positive-definite p?potrf p?poequ p?potrs p?pocon p?porfs p?potri
symmetric/Hermitian positive-definite, band p?pbtrf   p?pbtrs      
symmetric/Hermitian positive-definite, tridiagonal p?pttrf   p?pttrs      
triangular     p?trtrs p?trcon p?trrfs p?trtri

In this table ? stands for s (single precision real), d (double precision real), c (single precision complex), or z (double precision complex).

For more complete information about compiler optimizations, see our Optimization Notice.