Previous: cptcon Up: ../lapack-c.html Next: cptrfs


cpteqr


 NAME
      CPTEQR - compute all eigenvalues and, optionally, eigenvec-
      tors of a symmetric positive definite tridiagonal matrix by
      first factoring the matrix using SPTTRF and then calling
      CBDSQR to compute the singular values of the bidiagonal fac-
      tor

 SYNOPSIS
      SUBROUTINE CPTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO )

          CHARACTER      COMPZ

          INTEGER        INFO, LDZ, N

          REAL           D( * ), E( * ), WORK( * )

          COMPLEX        Z( LDZ, * )

 PURPOSE
      CPTEQR computes all eigenvalues and, optionally, eigenvec-
      tors of a symmetric positive definite tridiagonal matrix by
      first factoring the matrix using SPTTRF and then calling
      CBDSQR to compute the singular values of the bidiagonal fac-
      tor.

      This routine computes the eigenvalues of the positive defin-
      ite tridiagonal matrix to high relative accuracy.  This
      means that if the eigenvalues range over many orders of mag-
      nitude in size, then the small eigenvalues and corresponding
      eigenvectors will be computed more accurately than, for
      example, with the standard QR method.

      The eigenvectors of a full or band complex Hermitian matrix
      can also be found if CHETRD or CHPTRD or CHBTRD has been
      used to reduce this matrix to tridiagonal form.  (The reduc-
      tion to tridiagonal form, however, may preclude the possi-
      bility of obtaining high relative accuracy in the small
      eigenvalues of the original matrix, if these eigenvalues
      range over many orders of magnitude.)

 ARGUMENTS
      COMPZ   (input) CHARACTER*1
              = 'N':  Compute eigenvalues only.
              = 'V':  Compute eigenvectors of original Hermitian
              matrix also.  Array Z contains the unitary matrix
              used to reduce the original matrix to tridiagonal
              form.  = 'I':  Compute eigenvectors of tridiagonal
              matrix also.

      N       (input) INTEGER
              The order of the matrix.  N >= 0.

      D       (input/output) REAL array, dimension (N)
              On entry, the n diagonal elements of the tridiagonal
              matrix.  On normal exit, D contains the eigenvalues,
              in descending order.

      E       (input/output) REAL array, dimension (N-1)
              On entry, the (n-1) subdiagonal elements of the tri-
              diagonal matrix.  On exit, E has been destroyed.

      Z       (input/output) COMPLEX array, dimension (LDZ, N)
              On entry, if COMPZ = 'V', the unitary matrix used in
              the reduction to tridiagonal form.  On exit, if
              COMPZ = 'V', the orthonormal eigenvectors of the
              original Hermitian matrix; if COMPZ = 'I', the
              orthonormal eigenvectors of the tridiagonal matrix.
              If INFO > 0 on exit, Z contains the eigenvectors
              associated with only the stored eigenvalues.  If
              COMPZ = 'N', then Z is not referenced.

      LDZ     (input) INTEGER
              The leading dimension of the array Z.  LDZ >= 1, and
              if COMPZ = 'V' or 'I', LDZ >= max(1,N).

      WORK    (workspace) REAL array, dimension (max(1,4*N-4))
              If  COMPZ = 'N', then WORK is not referenced.

      INFO    (output) INTEGER
              = 0:  successful exit.
              < 0:  if INFO = -i, the i-th argument had an illegal
              value.
              > 0:  if INFO = i, and i is: <= N  the Cholesky fac-
              torization of the matrix could not be performed
              because the i-th principal minor was not positive
              definite.  > N   the SVD algorithm failed to con-
              verge; if INFO = N+i, i off-diagonal elements of the
              bidiagonal factor did not converge to zero.