DSYSV_ROOK(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’– DSYSV_ROOK(3) β€” Library Functions Manual, but make it cute πŸ’–

okay so the page header vibe is /home/abui...sysv_rook.f(3) on both ends, straight out of the Library Functions Manual, and we are about to get into some symmetric-matrix business, bestie. 🫢


✨ NAME ✨

The NAME section is literally just this path, no cap:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dsysv_rook.f


🌸 SYNOPSIS 🌸

Functions/Subroutines πŸ¦‹

subroutine DSYSV_ROOK (uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info)

DSYSV_ROOK computes the solution to system of linear equations A * X = B for SY matrices. iconic behavior, honestly. πŸ’…


πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine DSYSV_ROOK (character uplo, integer n, integer nrhs, double precision, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, double precision, dimension( ldb, * ) b, integer ldb, double precision, dimension( * ) work, integer lwork, integer info)

DSYSV_ROOK computes the solution to system of linear equations A * X = B for SY matrices.

🎯 Purpose 🎯

okay so DSYSV_ROOK computes the solution to a real system of linear equations

A * X = B,

where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices. main character energy for a matrix solver, fr fr. πŸ”₯

The diagonal pivoting method is used to factor A as

    A = U * D * U**T,  if UPLO = 'U', or
    A = L * D * L**T,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. the way that factorization ate, honestly. πŸ’–

DSYTRF_ROOK is called to compute the factorization of a real symmetric matrix A using the bounded Bunch-Kaufman () diagonal pivoting method. yes, the empty () is in the original, iykyk. πŸ™ˆ

The factored form of A is then used to solve the system of equations A * X = B by calling DSYTRS_ROOK. slay. ✨

πŸ’… Parameters πŸ’…

  • UPLO β€” it's CHARACTER*1, the triangle selector:
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • N β€” INTEGER. The number of linear equations, i.e., the order of the matrix A. N >= 0.
  • NRHS β€” INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.
  • A β€” DOUBLE PRECISION 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 INFO = 0, the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**T or A = L*D*L**T as computed by DSYTRF_ROOK.

  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” INTEGER array, dimension (N). Details of the interchanges and the block structure of D, as determined by DSYTRF_ROOK.
    • If UPLO = 'U':
      • If IPIV(k) > 0, then rows and columns k and IPIV(k) were interchanged and D(k,k) is a 1-by-1 diagonal block.
      • If IPIV(k) < 0 and IPIV(k-1) < 0, then rows and columns k and -IPIV(k) were interchanged and rows and columns k-1 and -IPIV(k-1) were inerchaged, D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
    • If UPLO = 'L':
      • If IPIV(k) > 0, then rows and columns k and IPIV(k) were interchanged and D(k,k) is a 1-by-1 diagonal block.
      • If IPIV(k) < 0 and IPIV(k+1) < 0, then rows and columns k and -IPIV(k) were interchanged and rows and columns k+1 and -IPIV(k+1) were inerchaged, D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
  • B β€” DOUBLE PRECISION array, dimension (LDB,NRHS). On entry, the N-by-NRHS right hand side matrix B. On exit, if INFO = 0, the N-by-NRHS solution matrix X.
  • LDB β€” INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • WORK β€” DOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  • LWORK β€” INTEGER. The length of WORK. LWORK >= 1, and for best performance LWORK >= max(1,N*NB), where NB is the optimal blocksize for DSYTRF_ROOK.

TRS will be done with Level 2 BLAS. πŸŒ€

If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.

  • INFO β€” INTEGER. the exit-status tea:
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value
    • > 0: if INFO = i, D(i,i) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed. 😭 that one is giving β€œno solution bestie.”

🌈 Author 🌈

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

πŸ’… Contributors πŸ’…

  • April 2012, Igor Kozachenko, Computer Science Division, University of California, Berkeley
  • September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas, School of Mathematics, University of Manchester

πŸ“ Definition at line 202 of file dsysv_rook.f πŸ“

literally: Definition at line 202 of file dsysv_rook.f. 🫢


πŸ’» Author πŸ’»

Generated automatically by Doxygen for LAPACK from the source code.


kisses and good luck with your symmetric systems, bestie πŸ’– LAPACK Version 3.12.0 from /home/abui...sysv_rook.f(3) 🫢

πŸ“¦ where this page comes from