# library.lapackeig Submodule¶

## Module Summary¶

Interfaces for the NAG Mark 30.1 lapackeig Chapter.

lapackeig - Least Squares and Eigenvalue Problems (LAPACK)

This module provides functions for the solution of linear least squares problems, eigenvalue problems and singular value problems, as well as associated computations. It provides functions for:

solution of linear least squares problems;

solution of symmetric eigenvalue problems;

solution of nonsymmetric eigenvalue problems;

solution of singular value problems;

solution of generalized linear least squares problems;

solution of generalized symmetric-definite eigenvalue problems;

solution of generalized nonsymmetric eigenvalue problems;

solution of generalized singular value problems;

matrix factorizations associated with the above problems;

estimating condition numbers of eigenvalue and eigenvector problems;

estimating the numerical rank of a matrix;

solution of the Sylvester matrix equation.

Functions are provided for both real and complex data.

For a general introduction to the solution of linear least squares problems, you should turn first to submodule linsys. The decision trees, at the end of submodule linsys, direct you to the most appropriate functions in submodule linsys or submodule lapackeig. Submodule linsys and submodule lapackeig contain Black Box (or driver) functions which enable standard linear least squares problems to be solved by a call to a single function.

For a general introduction to eigenvalue and singular value problems, you should turn first to submodule eigen. The decision trees, at the end of submodule eigen, direct you to the most appropriate functions in submodule eigen or submodule lapackeig. Submodule eigen and submodule lapackeig contain Black Box (or driver) functions which enable standard types of problem to be solved by a call to a single function. Often functions in submodule eigen call submodule lapackeig functions to perform the necessary computational tasks.

The functions in this module (submodule lapackeig) handle only dense, band, tridiagonal and Hessenberg matrices (not matrices with more specialised structures, or general sparse matrices). The tables in Available Functions and the decision trees in Decision Trees direct you to the most appropriate functions in submodule lapackeig.

The functions in this module have all been derived from the LAPACK project (see Anderson et al. (1999)). They have been designed to be efficient on a wide range of high-performance computers, without compromising efficiency on conventional serial machines.

## Functionality Index¶

Back transformation of eigenvectors from those of balanced forms

complex matrix: zgebak()

real matrix: dgebak()

Back transformation of generalized eigenvectors from those of balanced forms

complex matrix: zggbak()

real matrix: dggbak()

Balancing

complex general matrix: zgebal()

complex general matrix pair: zggbal()

real general matrix: dgebal()

real general matrix pair: dggbal()

Eigenvalue problems for condensed forms of matrices

complex Hermitian matrix

eigenvalues and eigenvectors

band matrix

all/selected eigenvalues and eigenvectors by root-free algorithm: zhbevx()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm, using packed storage: zhbevd()

all eigenvalues and eigenvectors by root-free algorithm: zhbev()

general matrix

all/selected eigenvalues and eigenvectors by root-free algorithm: zheevx()

all/selected eigenvalues and eigenvectors by root-free algorithm, using packed storage: zhpevx()

all/selected eigenvalues and eigenvectors using Relatively Robust Representations: zheevr()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: zheevd()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm, using packed storage: zhpevd()

all eigenvalues and eigenvectors by root-free algorithm: zheev()

all eigenvalues and eigenvectors by root-free algorithm, using packed storage: zhpev()

eigenvalues only

band matrix

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: zhbevx()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: zhbev()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm, using packed storage: zhbevd()

general matrix

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: zheevx()

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm, using packed storage: zhpevx()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: zheev()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm, using packed storage: zhpev()

complex upper Hessenberg matrix, reduced from complex general matrix

eigenvalues and Schur factorization: zhseqr()

selected right and/or left eigenvectors by inverse iteration: zhsein()

real bidiagonal matrix

singular value decomposition

after reduction from complex general matrix: zbdsqr()

after reduction from real general matrix: dbdsqr()

after reduction from real general matrix, using divide-and-conquer: dbdsdc()

real symmetric matrix

eigenvalues and eigenvectors

band matrix

all/selected eigenvalues and eigenvectors by root-free algorithm: dsbevx()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: dsbevd()

all eigenvalues and eigenvectors by root-free algorithm: dsbev()

general matrix

all/selected eigenvalues and eigenvectors by root-free algorithm: dsyevx()

all/selected eigenvalues and eigenvectors by root-free algorithm, using packed storage: dspevx()

all/selected eigenvalues and eigenvectors using Relatively Robust Representations: dsyevr()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: dsyevd()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm, using packed storage: dspevd()

all eigenvalues and eigenvectors by root-free algorithm: dsyev()

all eigenvalues and eigenvectors by root-free algorithm, using packed storage: dspev()

eigenvalues only

band matrix

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: dsbevx()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: dsbev()

general matrix

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: dsyevx()

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm, using packed storage: dspevx()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: dsyev()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm, using packed storage: dspev()

real symmetric tridiagonal matrix

eigenvalues and eigenvectors

after reduction from complex Hermitian matrix

all/selected eigenvalues and eigenvectors, using Relatively Robust Representations: zstegr()

all eigenvalues and eigenvectors: zsteqr()

all eigenvalues and eigenvectors, positive definite matrix: zpteqr()

all eigenvalues and eigenvectors, using divide-and-conquer: zstedc()

selected eigenvectors by inverse iteration: zstein()

all/selected eigenvalues and eigenvectors, using Relatively Robust Representations: dstegr()

all/selected eigenvalues and eigenvectors by root-free algorithm: dstevx()

all/selected eigenvalues and eigenvectors using Relatively Robust Representations: dstevr()

all eigenvalues and eigenvectors: dsteqr()

all eigenvalues and eigenvectors, by divide-and-conquer: dstedc()

all eigenvalues and eigenvectors, positive definite matrix: dpteqr()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: dstevd()

all eigenvalues and eigenvectors by root-free algorithm: dstev()

selected eigenvectors by inverse iteration: dstein()

eigenvalues only

all/selected eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: dstevx()

all eigenvalues by root-free algorithm: dsterf()

all eigenvalues by the Pal–Walker–Kahan variant of the or algorithm: dstev()

selected eigenvalues only: dstebz()

real upper Hessenberg matrix, reduced from real general matrix

eigenvalues and Schur factorization: dhseqr()

selected right and/or left eigenvectors by inverse iteration: dhsein()

Eigenvalue problems for nonsymmetric matrices

complex matrix

all eigenvalues, Schur form, Schur vectors and reciprocal condition numbers: zgeesx()

all eigenvalues, Schur form and Schur vectors: zgees()

all eigenvalues and left/right eigenvectors: zgeev()

all eigenvalues and left/right eigenvectors, plus balancing transformation and reciprocal condition numbers: zgeevx()

real matrix

all eigenvalues, real Schur form, Schur vectors and reciprocal condition numbers: dgeesx()

all eigenvalues, real Schur form and Schur vectors: dgees()

all eigenvalues and left/right eigenvectors: dgeev()

all eigenvalues and left/right eigenvectors, plus balancing transformation and reciprocal condition numbers: dgeevx()

Eigenvalues and generalized Schur factorization

complex generalized upper Hessenberg form: zhgeqz()

real generalized upper Hessenberg form: dhgeqz()

General Gauss–Markov linear model

solves a complex general Gauss–Markov linear model problem: zggglm()

solves a real general Gauss–Markov linear model problem: dggglm()

Generalized eigenvalue problems for condensed forms of matrices

complex Hermitian-definite eigenproblems

banded matrices

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: zhbgvd()

all eigenvalues and eigenvectors by reduction to tridiagonal form: zhbgv()

selected eigenvalues and eigenvectors by reduction to tridiagonal form: zhbgvx()

general matrices

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: zhegvd()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm, packed storage format: zhpgvd()

all eigenvalues and eigenvectors by reduction to tridiagonal form: zhegv()

all eigenvalues and eigenvectors by reduction to tridiagonal form, packed storage format: zhpgv()

selected eigenvalues and eigenvectors by reduction to tridiagonal form: zhegvx()

selected eigenvalues and eigenvectors by reduction to tridiagonal form, packed storage format: zhpgvx()

real symmetric-definite eigenproblems

banded matrices

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: dsbgvd()

all eigenvalues and eigenvectors by reduction to tridiagonal form: dsbgv()

selected eigenvalues and eigenvectors by reduction to tridiagonal form: dsbgvx()

general matrices

all eigenvalues and eigenvectors by a divide-and-conquer algorithm: dsygvd()

all eigenvalues and eigenvectors by a divide-and-conquer algorithm, packed storage format: dspgvd()

all eigenvalues and eigenvectors by reduction to tridiagonal form: dsygv()

all eigenvalues and eigenvectors by reduction to tridiagonal form, packed storage format: dspgv()

selected eigenvalues and eigenvectors by reduction to tridiagonal form: dsygvx()

selected eigenvalues and eigenvectors by reduction to tridiagonal form, packed storage format: dspgvx()

Generalized eigenvalue problems for nonsymmetric matrix pairs

complex nonsymmetric matrix pairs

all eigenvalues, generalized Schur form, Schur vectors and reciprocal condition numbers: zggesx()

all eigenvalues, generalized Schur form and Schur vectors, deprecated: zgges()

all eigenvalues, generalized Schur form and Schur vectors, using level 3 BLAS: zgges3()

all eigenvalues and left/right eigenvectors, deprecated: zggev()

all eigenvalues and left/right eigenvectors, plus the balancing transformation and reciprocal condition numbers: zggevx()

all eigenvalues and left/right eigenvectors, using level 3 BLAS: zggev3()

real nonsymmetric matrix pairs

all eigenvalues, generalized real Schur form and left/right Schur vectors, deprecated: dgges()

all eigenvalues, generalized real Schur form and left/right Schur vectors, plus reciprocal condition numbers: dggesx()

all eigenvalues, generalized real Schur form and left/right Schur vectors, using level 3 BLAS: dgges3()

all eigenvalues and left/right eigenvectors, deprecated: dggev()

all eigenvalues and left/right eigenvectors, plus the balancing transformation and reciprocal condition numbers: dggevx()

all eigenvalues and left/right eigenvectors, using level 3 BLAS: dggev3()

Generalized factorization

complex matrices: zggqrf()

real matrices: dggqrf()

Generalized factorization

complex matrices: zggrqf()

real matrices: dggrqf()

Generalized singular value decomposition

after reduction from complex general matrix

complex triangular or trapezoidal matrix pair: ztgsja()

after reduction from real general matrix

real triangular or trapezoidal matrix pair: dtgsja()

complex matrix pair, deprecated: zggsvd()

complex matrix pair, using level 3 BLAS: zggsvd3()

partitioned orthogonal matrix (CS decomposition): dorcsd()

partitioned unitary matrix (CS decomposition): zuncsd()

real matrix pair, deprecated: dggsvd()

real matrix pair, using level 3 BLAS: dggsvd3()

reduction of a pair of general matrices to triangular or trapezoidal form

complex matrices, deprecated: zggsvp()

complex matrices, using level 3 BLAS: zggsvp3()

real matrices, deprecated: dggsvp()

real matrices, using level 3 BLAS: dggsvp3()

least squares problems

complex matrices

apply orthogonal matrix: zunmrz()

minimum norm solution using a complete orthogonal factorization: zgelsy()

minimum norm solution using the singular value decomposition: zgelss()

minimum norm solution using the singular value decomposition (divide-and-conquer): zgelsd()

reduction of upper trapezoidal matrix to upper triangular form: ztzrzf()

real matrices

apply orthogonal matrix: dormrz()

minimum norm solution using a complete orthogonal factorization: dgelsy()

minimum norm solution using the singular value decomposition: dgelss()

minimum norm solution using the singular value decomposition (divide-and-conquer): dgelsd()

reduction of upper trapezoidal matrix to upper triangular form: dtzrzf()

least squares problems with linear equality constraints

complex matrices

minimum norm solution subject to linear equality constraints using a generalized factorization: zgglse()

real matrices

minimum norm solution subject to linear equality constraints using a generalized factorization: dgglse()

Left and right eigenvectors of a pair of matrices

complex upper triangular matrices: ztgevc()

real quasi-triangular matrices: dtgevc()

factorization and related operations

complex matrices

apply unitary matrix: zunmlq()

factorization: zgelqf()

form all or part of unitary matrix: zunglq()

real matrices

apply orthogonal matrix: dormlq()

factorization: dgelqf()

form all or part of orthogonal matrix: dorglq()

Operations on eigenvectors of a real symmetric or complex Hermitian matrix, or singular vectors of a general matrix

estimate condition numbers: ddisna()

Operations on generalized Schur factorization of a general matrix pair

complex matrix

estimate condition numbers of eigenvalues and/or eigenvectors: ztgsna()

re-order Schur factorization: ztgexc()

re-order Schur factorization, compute generalized eigenvalues and condition numbers: ztgsen()

real matrix

estimate condition numbers of eigenvalues and/or eigenvectors: dtgsna()

re-order Schur factorization: dtgexc()

re-order Schur factorization, compute generalized eigenvalues and condition numbers: dtgsen()

Operations on Schur factorization of a general matrix

complex matrix

compute left and/or right eigenvectors: ztrevc()

estimate sensitivities of eigenvalues and/or eigenvectors: ztrsna()

re-order Schur factorization: ztrexc()

re-order Schur factorization, compute basis of invariant subspace, and estimate sensitivities: ztrsen()

real matrix

compute left and/or right eigenvectors: dtrevc()

estimate sensitivities of eigenvalues and/or eigenvectors: dtrsna()

re-order Schur factorization: dtrexc()

re-order Schur factorization, compute basis of invariant subspace, and estimate sensitivities: dtrsen()

Overdetermined and underdetermined linear systems

complex matrices

solves an overdetermined or undetermined complex linear system: zgels()

real matrices

solves an overdetermined or undetermined real linear system: dgels()

Performs a reduction of eigenvalue problems to condensed forms, and related operations

real rectangular band matrix to upper bidiagonal form: dgbbrd()

factorization and related operations

complex matrices

apply unitary matrix: zunmql()

factorization: zgeqlf()

form all or part of unitary matrix: zungql()

real matrices

apply orthogonal matrix: dormql()

factorization: dgeqlf()

form all or part of orthogonal matrix: dorgql()

factorization and related operations

complex matrices

general matrices

apply unitary matrix: zunmqr()

apply unitary matrix, explicitly blocked: zgemqrt()

factorization: zgeqrf()

factorization, explicitly blocked: zgeqrt()

factorization, with column pivoting, deprecated: zgeqpf()

form all or part of unitary matrix: zungqr()

triangular-pentagonal matrices

apply unitary matrix: ztpmqrt()

factorization: ztpqrt()

real matrices

general matrices

apply orthogonal matrix: dormqr()

apply orthogonal matrix, explicitly blocked: dgemqrt()

factorization

with column pivoting, using BLAS-3: dgeqp3()

factorization, orthogonal matrix: dgeqrf()

factorization, with column pivoting, deprecated: dgeqpf()

factorization, with explicit blocking: dgeqrt()

form all or part of orthogonal matrix: dorgqr()

triangular-pentagonal matrices

apply orthogonal matrix: dtpqrt()

factorization: dtpmqrt()

Reduction of a pair of general matrices to generalized upper Hessenberg form

orthogonal reduction, real matrices, deprecated: dgghrd()

orthogonal reduction, real matrices, using level 3 BLAS: dgghd3()

unitary reduction, complex matrices, deprecated: zgghrd()

unitary reduction, complex matrices, using level 3 BLAS: zgghd3()

Reduction of eigenvalue problems to condensed forms, and related operations

complex general matrix to upper Hessenberg form

apply orthogonal matrix: zunmhr()

form orthogonal matrix: zunghr()

reduce to Hessenberg form: zgehrd()

complex Hermitian band matrix to real symmetric tridiagonal form: zhbtrd()

complex Hermitian matrix to real symmetric tridiagonal form

apply unitary matrix: zunmtr()

apply unitary matrix, packed storage: zupmtr()

form unitary matrix: zungtr()

form unitary matrix, packed storage: zupgtr()

reduce to tridiagonal form: zhetrd()

reduce to tridiagonal form, packed storage: zhptrd()

complex rectangular band matrix to real upper bidiagonal form: zgbbrd()

complex rectangular matrix to real bidiagonal form

apply unitary matrix: zunmbr()

form unitary matrix: zungbr()

reduce to bidiagonal form: zgebrd()

real general matrix to upper Hessenberg form

apply orthogonal matrix: dormhr()

form orthogonal matrix: dorghr()

reduce to Hessenberg form: dgehrd()

real rectangular matrix to bidiagonal form

apply orthogonal matrix: dormbr()

form orthogonal matrix: dorgbr()

reduce to bidiagonal form: dgebrd()

real symmetric band matrix to symmetric tridiagonal form: dsbtrd()

real symmetric matrix to symmetric tridiagonal form

apply orthogonal matrix: dormtr()

apply orthogonal matrix, packed storage: dopmtr()

form orthogonal matrix: dorgtr()

form orthogonal matrix, packed storage: dopgtr()

reduce to tridiagonal form: dsytrd()

reduce to tridiagonal form, packed storage: dsptrd()

Reduction of generalized eigenproblems to standard eigenproblems

complex Hermitian-definite banded generalized eigenproblem : zhbgst()

complex Hermitian-definite generalized eigenproblem , or : zhegst()

complex Hermitian-definite generalized eigenproblem , or , packed storage: zhpgst()

real symmetric-definite banded generalized eigenproblem : dsbgst()

real symmetric-definite generalized eigenproblem , or : dsygst()

real symmetric-definite generalized eigenproblem , or , packed storage: dspgst()

factorization and related operations

complex matrices

apply unitary matrix: zunmrq()

factorization: zgerqf()

form all or part of unitary matrix: zungrq()

real matrices

apply orthogonal matrix: dormrq()

factorization: dgerqf()

form all or part of orthogonal matrix: dorgrq()

Singular value decomposition

complex matrix

all/selected singular values and, optionally, the corresponding singular vectors: zgesvdx()

preconditioned Jacobi SVD using fast scaled rotations and de Rijks pivoting: zgejsv()

using a divide-and-conquer algorithm: zgesdd()

using bidiagonal iteration: zgesvd()

using fast scaled rotation and de Rijks pivoting: zgesvj()

real matrix

all/selected singular values and, optionally, the corresponding singular vectors: dgesvdx()

preconditioned Jacobi SVD using fast scaled rotations and de Rijks pivoting: dgejsv()

using a divide-and-conquer algorithm: dgesdd()

using bidiagonal iteration: dgesvd()

using fast scaled rotation and de Rijks pivoting: dgesvj()

real square bidiagonal matrix

all/selected singular values and, optionally, the corresponding singular vectors: dbdsvdx()

Solve generalized Sylvester equation

complex matrices: ztgsyl()

real matrices: dtgsyl()

Solve reduced form of Sylvester matrix equation

complex matrices: ztrsyl()

real matrices: dtrsyl()

Split Cholesky factorization

complex Hermitian positive definite band matrix: zpbstf()

real symmetric positive definite band matrix: dpbstf()

For full information please refer to the NAG Library document

https://support.nag.com/numeric/nl/nagdoc_30.1/flhtml/f08/f08intro.html