LATRD - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English
template<typename T>
void latrd(char *uplo, integer *n, integer *nb, T *a, integer *lda, T *e, T *tau, T *w, integer *ldw)#

LATRD reduces the first nb rows and columns of a symmetric/Hermitian

matrix A to real tridiagonal form by an orthogonal similarity transformation.

Purpose:

 LATRD reduces NB rows and columns of a real symmetric matrix A to
 symmetric tridiagonal form by an orthogonal similarity
 transformation Q**T * A * Q, and   returns the matrices V and W which are
 needed to apply the transformation to the unreduced part of A.

 If UPLO = 'U', SLATRD reduces the last NB rows and columns of a
 matrix, of which the upper triangle is supplied;
 if UPLO = 'L', SLATRD reduces the first NB rows and columns of a
 matrix, of which the lower triangle is supplied.

 This is an auxiliary routine called by SSYTRD.
Parameters:
  • UPLO[in]

    UPLO is CHARACTER*1

    Specifies whether the upper or lower triangular part of the symmetric matrix A is stored:

    = ‘U’: Upper triangular

    = ‘L’: Lower triangular

  • N[in]

    N is INTEGER

    The order of the matrix A.

  • NB[in]

    NB is INTEGER

    The number of rows and columns to be reduced.

  • A[inout]

    A is REAL array, dimension (LDA,N)

    On entry, the symmetric matrix A. If UPLO = ‘U’, the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = ‘L’, the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

    On exit:

    if UPLO = ‘U’, the last NB columns have been reduced to tridiagonal form, with the diagonal elements overwriting the diagonal elements of A; the elements above the diagonal with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors;

    if UPLO = ‘L’, the first NB columns have been reduced to tridiagonal form, with the diagonal elements overwriting the diagonal elements of A; the elements below the diagonal with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors.

    See Further Details.

  • LDA[in]

    LDA is INTEGER

    The leading dimension of the array A. LDA >= (1,N).

  • E[out]

    E is REAL array, dimension (N-1)

    If UPLO = ‘U’, E(n-nb:n-1) contains the superdiagonal elements of the last NB columns of the reduced matrix;

    if UPLO = ‘L’, E(1:nb) contains the subdiagonal elements of the first NB columns of the reduced matrix.
  • TAU[out]

    TAU is REAL array, dimension (N-1)

    The scalar factors of the elementary reflectors, stored in TAU(n-nb:n-1) if UPLO = ‘U’, and in TAU(1:nb) if UPLO = ‘L’. See Further Details.

  • W[out]

    W is REAL array, dimension (LDW,NB)

    The n-by-nb matrix W required to update the unreduced part of A.

  • LDW[in]

    LDW is INTEGER

    The leading dimension of the array W. LDW >= fla_max(1,N).

template<typename T, typename Ta>
void latrd(char *uplo, integer *n, integer *nb, T *a, integer *lda, Ta *e, T *tau, T *w, integer *ldw)#