SRC/dsyconvf.f(3)

okay so this is SRC/dsyconvf.f(3) from the Library Functions Manual β€” the main-character page for the DSYCONVF subroutine, and it is lowkey giving very official Fortran energy πŸ’…


🌸 NAME

SRC/dsyconvf.f

✨ SYNOPSIS

🧚 Functions/Subroutines

subroutine dsyconvf (uplo, way, n, a, lda, e, ipiv, info)
    DSYCONVF

πŸ’… Function/Subroutine Documentation

subroutine dsyconvf (character uplo, character way, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) e, integer, dimension( * ) ipiv, integer info)
    DSYCONVF

πŸ¦‹ Purpose

Bestie, this subroutine is a format converter. Here is the exact deal:

  • If parameter WAY = 'C': DSYCONVF converts the factorization output format used in DSYTRF provided on entry in parameter A into the factorization output format used in DSYTRF_RK (or DSYTRF_BK) that is stored on exit in parameters A and E. It also converts in place details of the interchanges stored in IPIV from the format used in DSYTRF into the format used in DSYTRF_RK (or DSYTRF_BK).
  • If parameter WAY = 'R': DSYCONVF performs the conversion in reverse direction, i.e. converts the factorization output format used in DSYTRF_RK (or DSYTRF_BK) provided on entry in parameters A and E into the factorization output format used in DSYTRF that is stored on exit in parameter A. It also converts in place details of the interchanges stored in IPIV from the format used in DSYTRF_RK (or DSYTRF_BK) into the format used in DSYTRF.

πŸŽ€ Parameters

πŸ’œ UPLO

UPLO is CHARACTER*1. It specifies whether the details of the factorization are stored as an upper or lower triangular matrix A.

  • = 'U': Upper triangular
  • = 'L': Lower triangular

🌈 WAY

WAY is CHARACTER*1.

  • = 'C': Convert
  • = 'R': Revert

⭐ N

N is INTEGER. It is the order of the matrix A. N >= 0.

πŸ”₯ A

A is DOUBLE PRECISION array, dimension (LDA,N).

1) If WAY ='C':

On entry, contains factorization details in format used in DSYTRF:

  • a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and
  • b) If UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. If UPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.

On exit, contains factorization details in format used in DSYTRF_RK or DSYTRF_BK:

  • a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e. D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in array E), and
  • b) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.

2) If WAY = 'R':

On entry, contains factorization details in format used in DSYTRF_RK or DSYTRF_BK:

  • a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e. D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in array E), and
  • b) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.

On exit, contains factorization details in format used in DSYTRF:

  • a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and
  • b) If UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. If UPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.

🐚 LDA

LDA is INTEGER. It is the leading dimension of the array A. LDA >= max(1,N).

πŸ“ E

E is DOUBLE PRECISION array, dimension (N).

1) If WAY ='C':

On entry, just a workspace.

On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where

  • If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) is set to 0;
  • If UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) is set to 0.

2) If WAY = 'R':

On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where

  • If UPLO = 'U': E(i) = D(i-1,i),i=2:N, E(1) not referenced;
  • If UPLO = 'L': E(i) = D(i+1,i),i=1:N-1, E(N) not referenced.

On exit, is not changed.

🧊 IPIV

IPIV is INTEGER array, dimension (N).

1) If WAY ='C':

On entry, details of the interchanges and the block structure of D in the format used in DSYTRF. On exit, details of the interchanges and the block structure of D in the format used in DSYTRF_RK ( or DSYTRF_BK).

1) If WAY ='R':

On entry, details of the interchanges and the block structure of D in the format used in DSYTRF_RK ( or DSYTRF_BK). On exit, details of the interchanges and the block structure of D in the format used in DSYTRF.

yes bestie, the source really labels both of these as 1) β€” I am not out here fixing Fortran's cute little quirks πŸ’€

πŸ’€ INFO

INFO is INTEGER.

  • = 0: successful exit
  • < 0: if INFO = -i, the i-th argument had an illegal value

πŸ‘‘ Author

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

🌟 Contributors:

  • November 2017, Igor Kozachenko,
  • Computer Science Division,
  • University of California, Berkeley

Definition at line 205 of file dsyconvf.f.

πŸ’» Author

Generated automatically by Doxygen for LAPACK from the source code.


and that is the whole page, bestie! πŸ’– Footer tea: source SRC/dsyconvf.f(3), LAPACK Version 3.12.0 β€” and the footer does not give a date, so I am not inventing one ✨🫢

πŸ“¦ where this page comes from