TESTING/LIN/zlavsp.f(3)

πŸ“¦
version 3.12.1 Β· 2 versions
, in arch rolling

πŸ’– TESTING/LIN/zlavsp.f(3) πŸ’–

okay so bestie, we're looking at the zlavsp page from the TESTING/LIN corner of the LAPACK universe β€” it's a Fortran subroutine docs page, manual-page style, and it's lowkey iconic. Let's get into it. 🫢


✨ SYNOPSIS ✨

Functions/Subroutines

subroutine zlavsp (uplo, trans, diag, n, nrhs, a, ipiv, b, ldb, info)
ZLAVSP β€” that's the name, and yes it's all caps because Fortran is dramatic like that. πŸ’…

Function/Subroutine Documentation

subroutine zlavsp (character uplo, character trans, character diag, integer n, integer nrhs, complex*16, dimension( * ) a, integer, dimension( * ) ipiv, complex*16, dimension( ldb, * ) b, integer ldb, integer info)

ZLAVSP


🌸 DESCRIPTION 🌸

Purpose:

!> !> ZLAVSP performs one of the matrix-vector operations !> x := A*x or x := A^T*x, !> where x is an N element vector and A is one of the factors !> from the symmetric factorization computed by ZSPTRF. !> ZSPTRF produces a factorization of the form !> U * D * U^T or L * D * L^T, !> where U (or L) is a product of permutation and unit upper (lower) !> triangular matrices, U^T (or L^T) is the transpose of !> U (or L), and D is symmetric and block diagonal with 1 x 1 and !> 2 x 2 diagonal blocks. The multipliers for the transformations !> and the upper or lower triangular parts of the diagonal blocks !> are stored columnwise in packed format in the linear array A. !> !> If TRANS = 'N' or 'n', ZLAVSP multiplies either by U or U * D !> (or L or L * D). !> If TRANS = 'C' or 'c', ZLAVSP multiplies either by U^T or D * U^T !> (or L^T or D * L^T ). !>

so basically, ZLAVSP is the vibe-check enforcer for multiplying a vector by one of the factors from a symmetric factorization. It's giving "I know what ZSPTRF did last summer" and it's ready to apply those transformations. The packed format in A is doing the most, but that's the assignment. 😭


🌈 PARAMETERS 🌈

  • UPLO β€” CHARACTER*1 on entry, UPLO specifies whether the triangular matrix stored in A is upper or lower triangular.
    • UPLO = 'U' or 'u' β€” the matrix is upper triangular. πŸ‘‘
    • UPLO = 'L' or 'l' β€” the matrix is lower triangular. 🧚 unchanged on exit.
  • TRANS β€” CHARACTER*1 on entry, TRANS specifies the operation to be performed, and it's honestly straightforward:
    • TRANS = 'N' or 'n' β€” x := A*x. ✨
    • TRANS = 'T' or 't' β€” x := A^T*x. πŸ”₯ unchanged on exit.
  • DIAG β€” CHARACTER*1 on entry, DIAG specifies whether the diagonal blocks are assumed to be unit matrices:
    • DIAG = 'U' or 'u' β€” diagonal blocks are unit matrices. πŸ’…
    • DIAG = 'N' or 'n' β€” diagonal blocks are non-unit. 🌸 unchanged on exit.
  • N β€” INTEGER on entry, N specifies the order of the matrix A. N must be at least zero. (no negatives, bestie, it's not that kind of party) unchanged on exit.
  • NRHS β€” INTEGER on entry, NRHS specifies the number of right hand sides β€” i.e., the number of vectors x to be multiplied by A. NRHS must be at least zero. unchanged on exit.
  • A β€” COMPLEX*16 array, dimension( N*(N+1)/2 ) on entry, A contains a block diagonal matrix and the multipliers of the transformations used to obtain it, stored as a packed triangular matrix. unchanged on exit. (she's just here to be read, not rewritten, periodt)
  • IPIV β€” INTEGER array, dimension( N ) on entry, IPIV contains the vector of pivot indices as determined by ZSPTRF.
    • If IPIV( K ) = K, no interchange was done. 😌
    • If IPIV( K ) <> K but IPIV( K ) > 0, then row K was interchanged with row IPIV( K ) and a 1 x 1 pivot block was used.
    • If IPIV( K ) < 0 and UPLO = 'U', then row K-1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used.
    • If IPIV( K ) < 0 and UPLO = 'L', then row K+1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used.
  • B β€” COMPLEX*16 array, dimension( LDB, NRHS ) on entry, B contains NRHS vectors of length N. on exit, B is overwritten with the product A * B. πŸ”₯ (she ate and left no crumbs, but also she left the result in B)
  • LDB β€” INTEGER on entry, LDB contains the leading dimension of B as declared in the calling program. LDB must be at least max( 1, N ). unchanged on exit.
  • INFO β€” INTEGER INFO is the error flag.
    • On exit, a value of 0 indicates a successful exit. πŸŽ‰
    • A negative value, say -K, indicates that the K-th argument has an illegal value. πŸ’€ (so check your inputs, bestie, INFO will absolutely call you out)

πŸŽ€ AUTHOR πŸŽ€

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 129 of file zlavsp.f. πŸ“


⭐ AUTHOR (the meta one) ⭐

Generated automatically by Doxygen for LAPACK from the source code. πŸ€–βœ¨


LAPACK β€” Version 3.12.0 β€” TESTING/LIN/zlavsp.f(3) that's the whole page, bestie. no cap, every flag and every pivot rule is here. now go slay those symmetric factorizations. πŸ’œπŸ¦‹
πŸ“¦ where this page comes from