complex16_blas_level2(3)
NAME
complex16_blas_level2(3) β complex16 π
SYNOPSIS β¨
okay so bestie, this page is the whole squad of complex16 LEVEL 2 BLAS routines. here's the full roster with exact signatures, no cap:
Functions
subroutine zgbmv (TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y,
INCY)
ZGBMV
subroutine zgemv (TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zgerc (M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERC
subroutine zgeru (M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERU
subroutine zhbmv (UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHBMV
subroutine zhemv (UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHEMV
subroutine zher (UPLO, N, ALPHA, X, INCX, A, LDA)
ZHER
subroutine zher2 (UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZHER2
subroutine zhpmv (UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
ZHPMV
subroutine zhpr (UPLO, N, ALPHA, X, INCX, AP)
ZHPR
subroutine zhpr2 (UPLO, N, ALPHA, X, INCX, Y, INCY, AP)
ZHPR2
subroutine ztbmv (UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBMV
subroutine ztbsv (UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBSV
subroutine ztpmv (UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPMV
subroutine ztpsv (UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPSV
subroutine ztrmv (UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRMV
subroutine ztrsv (UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRSV
Detailed Description π
okay so this is literally the group of complex16 LEVEL 2 BLAS routines. that's the vibe. periodt. π
Function Documentation π
subroutine zgbmv (character TRANS, integer M, integer N, integer KL, integer KU, complex*16 ALPHA, complex*16, dimension(lda,*) A, integer LDA, complex*16, dimension(*) X, integer INCX, complex*16 BETA, complex*16, dimension(*) Y, integer INCY)
ZGBMV π
Purpose
okay so ZGBMV does one of these matrix-vector operations:
y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
y := alpha*A**H*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an m by n band matrix, with kl sub-diagonals and ku super-diagonals. no cap.
Parameters
TRANSβTRANS is CHARACTER*1. On entry,TRANSspecifies the operation to be performed as follows:TRANS = 'N' or 'n'βy := alpha*A*x + beta*y.TRANS = 'T' or 't'βy := alpha*A**T*x + beta*y.TRANS = 'C' or 'c'βy := alpha*A**H*x + beta*y.
MβM is INTEGER. On entry,Mspecifies the number of rows of the matrixA.Mmust be at least zero.NβN is INTEGER. On entry,Nspecifies the number of columns of the matrixA.Nmust be at least zero.KLβKL is INTEGER. On entry,KLspecifies the number of sub-diagonals of the matrixA.KLmust satisfy0 .le. KL.KUβKU is INTEGER. On entry,KUspecifies the number of super-diagonals of the matrixA.KUmust satisfy0 .le. KU.ALPHAβALPHA is COMPLEX*16. On entry,ALPHAspecifies the scalaralpha.AβA is COMPLEX*16 array, dimension ( LDA, N ). Before entry, the leading( kl + ku + 1 )bynpart of the arrayAmust contain the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row( ku + 1 )of the array, the first super-diagonal starting at position 2 in rowku, the first sub-diagonal starting at position 1 in row( ku + 2 ), and so on. Elements in the arrayAthat do not correspond to elements in the band matrix (such as the top leftkubykutriangle) are not referenced. The following program segment will transfer a band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
K = KU + 1 - J
DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
A( K + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
LDAβLDA is INTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at least( kl + ku + 1 ).XβX is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.Before entry, the incremented arrayXmust contain the vectorx.INCXβINCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero.BETAβBETA is COMPLEX*16. On entry,BETAspecifies the scalarbeta. WhenBETAis supplied as zero thenYneed not be set on input.YβY is COMPLEX*16 array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.Before entry, the incremented arrayYmust contain the vectory. On exit,Yis overwritten by the updated vectory.INCYβINCY is INTEGER. On entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details
Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zgemv (character TRANS, integer M, integer N, complex*16 ALPHA, complex*16, dimension(lda,*) A, integer LDA, complex*16, dimension(*) X, integer INCX, complex*16 BETA, complex*16, dimension(*) Y, integer INCY)
ZGEMV π
Purpose
okay so ZGEMV does one of these matrix-vector operations:
y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
y := alpha*A**H*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an m by n matrix.
Parameters
TRANSβTRANS is CHARACTER*1. On entry,TRANSspecifies the operation to be performed as follows:TRANS = 'N' or 'n'βy := alpha*A*x + beta*y.TRANS = 'T' or 't'βy := alpha*A**T*x + beta*y.TRANS = 'C' or 'c'βy := alpha*A**H*x + beta*y.
MβM is INTEGER. On entry,Mspecifies the number of rows of the matrixA.Mmust be at least zero.NβN is INTEGER. On entry,Nspecifies the number of columns of the matrixA.Nmust be at least zero.ALPHAβALPHA is COMPLEX*16. On entry,ALPHAspecifies the scalaralpha.AβA is COMPLEX*16 array, dimension ( LDA, N ). Before entry, the leadingmbynpart of the arrayAmust contain the matrix of coefficients.LDAβLDA is INTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, m ).XβX is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.Before entry, the incremented arrayXmust contain the vectorx.INCXβINCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero.BETAβBETA is COMPLEX*16. On entry,BETAspecifies the scalarbeta. WhenBETAis supplied as zero thenYneed not be set on input.YβY is COMPLEX*16 array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.Before entry withBETAnon-zero, the incremented arrayYmust contain the vectory. On exit,Yis overwritten by the updated vectory.INCYβINCY is INTEGER. On entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details
Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zgerc (integer M, integer N, complex*16 ALPHA, complex*16, dimension(*) X, integer INCX, complex*16, dimension(*) Y, integer INCY, complex*16, dimension(lda,*) A, integer LDA)
ZGERC π
Purpose
okay so ZGERC performs the rank 1 operation:
A := alpha*x*y**H + A,
where alpha is a scalar, x is an m element vector, y is an n element vector and A is an m by n matrix.
Parameters
MβM is INTEGER. On entry,Mspecifies the number of rows of the matrixA.Mmust be at least zero.NβN is INTEGER. On entry,Nspecifies the number of columns of the matrixA.Nmust be at least zero.ALPHAβALPHA is COMPLEX*16. On entry,ALPHAspecifies the scalaralpha.Xβ
X β X is a COMPLEX*16 array, dimension at least ( 1 + ( m - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the m element vector x. π¦
INCX β INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Zero is not the vibe, bestie. π
Y β Y is a COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. β¨
INCY β INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Same rule, no exceptions. π
A β A is a COMPLEX*16 array, dimension ( LDA, N ). Before entry, the leading m by n part of the array A must contain the matrix of coefficients. On exit, A is overwritten by the updated matrix. She gets a glow-up whether you asked for it or not. π₯
LDA β LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ). π
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details: π
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zgeru (integer M, integer N, complex*16 ALPHA, complex*16, dimension() X, integer INCX, complex16, dimension() Y, integer INCY, complex16, dimension(lda,*) A, integer LDA) π§
ZGERU β say hi to the icon. π
Purpose: ZGERU performs the rank 1 operation
A := alpha*x*y**T + A,
where alpha is a scalar, x is an m element vector, y is an n element vector and A is an m by n matrix. Literally just vibes being added to your matrix. β
Parameters π
M β M is INTEGER. On entry, M specifies the number of rows of the matrix A. M must be at least zero. π
N β N is INTEGER. On entry, N specifies the number of columns of the matrix A. N must be at least zero.
ALPHA β ALPHA is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. πΈ
X β X is COMPLEX*16 array, dimension at least ( 1 + ( m - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the m element vector x. π«
INCX β INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
Y β Y is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. π¦
INCY β INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero.
A β A is COMPLEX*16 array, dimension ( LDA, N ). Before entry, the leading m by n part of the array A must contain the matrix of coefficients. On exit, A is overwritten by the updated matrix. No take-backs. π
LDA β LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ). β¨
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details: π
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zhbmv (character UPLO, integer N, integer K, complex*16 ALPHA, complex*16, dimension(lda,) A, integer LDA, complex16, dimension() X, integer INCX, complex16 BETA, complex*16, dimension(*) Y, integer INCY) π
ZHBMV β hermitian band matrix hours, we're so back. π«Ά
Purpose: ZHBMV performs the matrix-vector operation
y := alpha*A*x + beta*y,
where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian band matrix, with k super-diagonals. π
Parameters π
UPLO β UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the band matrix A is being supplied as follows:
UPLO = 'U' or 'u' The upper triangular part of A is
being supplied.
UPLO = 'L' or 'l' The lower triangular part of A is
being supplied.
N β N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
K β K is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K.
ALPHA β ALPHA is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. πΈ
A β A is COMPLEX*16 array, dimension ( LDA, N ). Okay so this is the long one, stay with me bestie. π
Before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the hermitian matrix, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. The top left k by k triangle of the array A is not referenced. π
The following program segment will transfer the upper triangular part of a hermitian band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
M = K + 1 - J
DO 10, I = MAX( 1, J - K ), J
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the hermitian matrix, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced. π
The following program segment will transfer the lower triangular part of a hermitian band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
M = 1 - J
DO 10, I = J, MIN( N, J + K )
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Note that the imaginary parts of the diagonal elements need not be set and are assumed to be zero. π«Ά
LDA β LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ). β¨
X β X is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x. π«
INCX β INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
BETA β BETA is COMPLEX*16. On entry, BETA specifies the scalar beta. πΈ
Y β Y is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y. π
INCY β INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero.
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details: π
Level 2 Blas routine.
The vector and matrix arguments are not referenced when N = 0, or M = 0
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zhemv (character UPLO, integer N, complex*16 ALPHA, complex*16, dimension(lda,) A, integer LDA, complex16, dimension() X, integer INCX, complex16 BETA, complex*16, dimension(*) Y, integer INCY) π¦
ZHEMV β hermitian matrix-vector multiply, the moment. π
Purpose: ZHEMV performs the matrix-vector operation
y := alpha*A*x + beta*y,
where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix. β
Parameters π
UPLO β UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
UPLO = 'U' or 'u' Only the upper triangular part of A
is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of A
is to be referenced.
N β N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
ALPHA β ALPHA is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. πΈ
A
Aβ aCOMPLEX*16array, dimension( LDA, N ). Okay so listen: if you roll in withUPLO = 'U'or'u', then the leading n by n upper triangular part ofAhas to already hold the upper triangular part of the hermitian matrix, and the strictly lower triangular part ofAis not referenced, like it's not even invited to the function π . But if you come in withUPLO = 'L'or'l', then it's the leading n by n lower triangular part ofAthat must contain the lower triangular part of the hermitian matrix, and this time the strictly upper triangular part ofAis the one that's not referenced. Also important, bestie: the imaginary parts of the diagonal elements don't even need to be set β they're just assumed to be zero. No cap. π«ΆLDAβLDAisINTEGER. On entry,LDAtells us the first dimension ofAas declared in the calling (sub) program. And it's gotta be at leastmax( 1, n ). Periodt.XβXis aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vector x. β¨INCXβINCXisINTEGER. On entry,INCXis the increment for the elements ofX. AndINCXmust not be zero. Like, do not. π«BETAβBETAisCOMPLEX*16. On entry,BETAis the scalar beta. And here's the lil shortcut: whenBETAis supplied as zero, thenYdoesn't need to be set on input. Iconic behaviour honestly. πYβYis aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented arrayYmust contain the n element vector y. And on exit?Ygets overwritten by the updated vector y. She's changed, she's grown. π¦INCYβINCYisINTEGER. On entry,INCYis the increment for the elements ofY. AndINCYmust not be zero either. π§
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details: πΈ
Level 2 Blas routine. The vector and matrix arguments are not referenced whenN = 0, orM = 0
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zher π
subroutine zher (character UPLO, integer N, double precision ALPHA,
complex*16, dimension(*) X, integer INCX, complex*16, dimension(lda,*)
A, integer LDA)
ZHER
Purpose: β¨
ZHER performs the hermitian rank 1 operation
A := alpha*x*x**H + A,
where alpha is a real scalar, x is an n element vector and A is an n by n hermitian matrix. Rank 1, one single update, and she ate. π
Parameters
UPLOβUPLOisCHARACTER*1. On entry,UPLOsays whether the upper or lower triangular part of the arrayAis to be referenced, like this:
UPLO = 'U' or 'u' Only the upper triangular part of A
is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of A
is to be referenced.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA. AndNmust be at least zero.ALPHAβALPHAisDOUBLE PRECISION.On entry,ALPHAspecifies the scalar alpha. (Real scalar energy for a hermitian glow-up π)XβXis aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vector x. πINCXβINCXisINTEGER. On entry,INCXis the increment for the elements ofX.INCXmust not be zero. πAβAis aCOMPLEX*16array, dimension( LDA, N ). Before entry withUPLO = 'U'or'u', the leading n by n upper triangular part of the arrayAmust contain the upper triangular part of the hermitian matrix, and the strictly lower triangular part ofAis not referenced. On exit, the upper triangular part of the arrayAis overwritten by the upper triangular part of the updated matrix. π«
Before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the hermitian matrix, and the strictly upper triangular part of A is not referenced. On exit, the lower triangular part of the array A is overwritten by the lower triangular part of the updated matrix.
Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero, and on exit they are set to zero. β¨
LDAβLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ). No negotiating on this one bestie.
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details: πΈ
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zher2 π¦
subroutine zher2 (character UPLO, integer N, complex*16 ALPHA, complex*16,
dimension(*) X, integer INCX, complex*16, dimension(*) Y, integer INCY,
complex*16, dimension(lda,*) A, integer LDA)
ZHER2
Purpose: β¨
ZHER2 performs the hermitian rank 2 operation
A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
where alpha is a scalar, x and y are n element vectors and A is an n by n hermitian matrix. Two vectors, one glow-up, main character energy. π
Parameters
UPLOβUPLOisCHARACTER*1. On entry,UPLOsays whether the upper or lower triangular part of the arrayAis to be referenced, as follows:
UPLO = 'U' or 'u' Only the upper triangular part of A
is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of A
is to be referenced.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero.ALPHAβALPHAisCOMPLEX*16. On entry,ALPHAspecifies the scalar alpha. (Yes bestie, complex this time, we're not playing around π )XβXis aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain the n element vector x. π¦INCXβINCXisINTEGER. On entry,INCXis the increment for the elements ofX.INCXmust not be zero. π«YβYis aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented arrayYmust contain the n element vector y. πΈINCYβINCYisINTEGER. On entry,INCYis the increment for the elements ofY.INCYmust not be zero. π§AβAis aCOMPLEX*16array, dimension( LDA, N ). Before entry withUPLO = 'U'or'u', the leading n by n upper triangular part of the arrayAmust contain the upper triangular part of the hermitian matrix, and the strictly lower triangular part ofAis not referenced. On exit, the upper triangular part of the arrayAis overwritten by the upper triangular part of the updated matrix. β¨
Before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the hermitian matrix, and the strictly upper triangular part of A is not referenced. On exit, the lower triangular part of the array A is overwritten by the lower triangular part of the updated matrix.
Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero, and on exit they are set to zero. π
LDAβLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ).
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details: πΈ
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine zhpmv π
subroutine zhpmv (character UPLO, integer N, complex*16 ALPHA, complex*16,
dimension(*) AP, complex*16, dimension(*) X, integer INCX, complex*16
BETA, complex*16, dimension(*) Y, integer INCY)
ZHPMV
Purpose: β¨
ZHPMV performs the matrix-vector operation
y := alpha*A*x + beta*y,
where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix, supplied in packed form. Yes, packed β she's compact, she's efficient, she's that girl. π
Parameters
UPLOβUPLOisCHARACTER*1. On entry,UPLOspecifies whether the upper or lower triangular part of the matrixAis supplied in the packed arrayAP, like this:
UPLO = 'U' or 'u' The upper triangular part of A is
supplied in AP.
UPLO = 'L' or 'l' The lower triangular part of A is
supplied in AP.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero.ALPHAβALPHAisCOMPLEX*16. On entry,ALPHAspecifies the scalar alpha. πAPAPβ is aCOMPLEX*16array, dimension at least( ( n*( n + 1 ) )/2 ).
okay so picture this: with UPLO = 'U' or 'u', AP is holding the upper triangular part of the hermitian matrix, packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. literally just stacking the columns one after another, no zeros, no filler, all vibes π
and with UPLO = 'L' or 'l', AP holds the lower triangular part of the hermitian matrix, packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. same energy, other corner β¨
heads up bestie: the imaginary parts of the diagonal elements don't need to be set at all β they're assumed to be zero. don't waste your time writing them π
Xβ is aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ).
before entry, the incremented array X must contain the n element vector x. that's the whole assignment. put x in there. π«Ά
INCXβ isINTEGER.
on entry, INCX specifies the increment for the elements of X. and bestie β INCX must not be zero. like, at all. zero is not it. π
BETAβ isCOMPLEX*16.
on entry, BETA specifies the scalar beta. and here's the cute part: when BETA is supplied as zero, Y need not be set on input β you can just leave it sitting there, unbothered, because it's not getting read π
Yβ is aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ).
before entry, the incremented array Y must contain the n element vector y. and on exit? Y is overwritten by the updated vector y. it goes in as y, it comes out as the new y. glow up fr fr β¨
INCYβ isINTEGER.
on entry, INCY specifies the increment for the elements of Y. and same rule as its sibling: INCY must not be zero. π«
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
Level 2 Blas routine.
The vector and matrix arguments are not referenced when N = 0, or M = 0
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
not them writing this on 22-October-1986 and it still running your entire numerical stack. legends only. π
π ZHPR π
subroutine zhpr (character UPLO, integer N, double precision ALPHA, complex*16, dimension(*) X, integer INCX, complex*16, dimension(*) AP)
Purpose:
ZHPR performs the hermitian rank 1 operation
A := alpha*x*x**H + A,
where alpha is a real scalar, x is an n element vector and A is an
n by n hermitian matrix, supplied in packed form.
ok so ZHPR is out here doing a hermitian rank 1 operation β alpha is a real scalar this time, x is an n element vector, and A is an n by n hermitian matrix, supplied in packed form. one vector, one rank, one update. simple, iconic, done. π
Parameters
UPLOβ isCHARACTER*1.
on entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, like so:
UPLO = 'U'or'u'β the upper triangular part of A is supplied inAP.UPLO = 'L'or'l'β the lower triangular part of A is supplied inAP.
Nβ isINTEGER.
on entry, N specifies the order of the matrix A. N must be at least zero.
ALPHAβ isDOUBLE PRECISION.
on entry, ALPHA specifies the scalar alpha. (real one, remember β not complex, this routine said so π«Ά)
Xβ is aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ).
before entry, the incremented array X must contain the n element vector x.
INCXβ isINTEGER.
on entry, INCX specifies the increment for the elements of X. INCX must not be zero.
APβ is aCOMPLEX*16array, dimension at least( ( n*( n + 1 ) )/2 ).
before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the hermitian matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. on exit, the array AP is overwritten by the upper triangular part of the updated matrix. π«
before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the hermitian matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. on exit, the array AP is overwritten by the lower triangular part of the updated matrix.
and the note: the imaginary parts of the diagonal elements need not be set, they are assumed to be zero, and on exit they are set to zero. so this routine actually cleans them up for you. considerate queen behavior π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
π¦ ZHPR2 π¦
subroutine zhpr2 (character UPLO, integer N, complex*16 ALPHA, complex*16, dimension(*) X, integer INCX, complex*16, dimension(*) Y, integer INCY, complex*16, dimension(*) AP)
Purpose:
ZHPR2 performs the hermitian rank 2 operation
A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
where alpha is a scalar, x and y are n element vectors and A is an
n by n hermitian matrix, supplied in packed form.
so ZHPR2 is the rank 2 sibling β two vectors, and look at that beautiful symmetry: alpha*x*y**H plus conjg( alpha )*y*x**H plus A. the conjugate is doing the heavy lifting so the result stays hermitian. it's giving math with taste π
Parameters
UPLOβ isCHARACTER*1.
on entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, as follows:
UPLO = 'U'or'u'β the upper triangular part of A is supplied inAP.UPLO = 'L'or'l'β the lower triangular part of A is supplied inAP.
Nβ isINTEGER.
on entry, N specifies the order of the matrix A. N must be at least zero.
ALPHAβ isCOMPLEX*16.
on entry, ALPHA specifies the scalar alpha. (yep β complex this time, not real. different routine, different rules β¨)
Xβ is aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ).
before entry, the incremented array X must contain the n element vector x.
INCXβ isINTEGER.
on entry, INCX specifies the increment for the elements of X. INCX must not be zero.
Yβ is aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCY ) ).
before entry, the incremented array Y must contain the n element vector y.
INCYβ isINTEGER.
on entry, INCY specifies the increment for the elements of Y. INCY must not be zero.
APβ is aCOMPLEX*16array, dimension at least( ( n*( n + 1 ) )/2 ).
before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the hermitian matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. on exit, the array AP is overwritten by the upper triangular part of the updated matrix. πΈ
before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the hermitian matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. on exit, the array AP is overwritten by the lower triangular part of the updated matrix.
again: the imaginary parts of the diagonal elements need not be set, they are assumed to be zero, and on exit they are set to zero. π§
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
π ZTBMV π
subroutine ztbmv (character UPLO, character TRANS, character DIAG, integer N, integer K, complex*16, dimension(lda,*) A, integer LDA, complex*16, dimension(*) X, integer INCX)
Purpose:
ZTBMV performs one of the matrix-vector operations
x := A*x, or x := A**T*x, or x := A**H*x,
where x is an n element vector and A is an n by n unit, or non-unit,
upper or lower triangular band matrix, with ( k + 1 ) diagonals.
ZTBMV is the triangular band matrix one β you pick whether you want A*x, A**T*x, or A**H*x, and A is an n by n unit or non-unit, upper or lower triangular band matrix, with ( k + 1 ) diagonals. banded, so it's compact and fast and lowkey flexing πββοΈπ¨
Parameters
UPLOβ isCHARACTER*1.
on entry, UPLO specifies whether the matrix is an upper or lower triangular matrix, as follows:
UPLO = 'U'or'u'β A is an upper triangular matrix.UPLO = 'L'or'l'β A is a lower triangular matrix.
TRANSβ isCHARACTER*1.
on entry, TRANS specifies the operation to be performed, as follows:
TRANS = 'N'or'n'βx := A*x.TRANS = 'T'or't'βx := A**T*x.TRANS = 'C'or'c'βx := A**H*x.
DIAGβ isCHARACTER*1.
on entry, DIAG specifies whether or not A is unit triangular, as follows:
DIAG = 'U'or'u'β A is assumed to be unit triangular.DIAG = 'N'or'n'β A is not assumed to be unit triangular.
N
N πΈ
N is INTEGER β on entry, N tells us the order of the matrix A. Bestie, N has to be at least zero, no negativity allowed here. π
K β¨
K is INTEGER β okay so this one's a lil shape-shifter depending on your UPLO:
- On entry with
UPLO = 'U'or'u',Kspecifies the number of super-diagonals of the matrixA. - On entry with
UPLO = 'L'or'l',Kspecifies the number of sub-diagonals of the matrixA.
And K must satisfy 0 .le. K. Periodt. π
A π¦
A is COMPLEX*16 array, dimension ( LDA, N ).
Before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. The top left k by k triangle of the array A is not referenced β it's giving "not invited to the party" energy.
The following program segment will transfer an upper triangular band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
M = K + 1 - J
DO 10, I = MAX( 1, J - K ), J
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced either, same vibe, different corner.
The following program segment will transfer a lower triangular band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
M = 1 - J
DO 10, I = J, MIN( N, J + K )
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Note that whenDIAG = 'U'or'u'the elements of the arrayAcorresponding to the diagonal elements of the matrix are not referenced, but are assumed to be unity. Like, they're there but also not there. Iconic behavior honestly. π
LDA π
LDA is INTEGER β on entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ). No skimping, bestie.
X π
X is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n element vector x. On exit, X is overwritten with the transformed vector x. She said "new me, who dis". β¨
INCX π
INCX is INTEGER β on entry, INCX specifies the increment for the elements of X. INCX must not be zero. Fr fr, zero is not the move.
Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details: π
Level 2 Blas routine.
The vector and matrix arguments are not referenced when N = 0, or M = 0
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine ztbsv (character UPLO, character TRANS, character DIAG, integer N, integer K, complex*16, dimension(lda,*) A, integer LDA, complex*16, dimension(*) X, integer INCX)
ZTBSV π§
Purpose: π
ZTBSV solves one of the systems of equations
A*x = b, or A**T*x = b, or A**H*x = b,
where b and x are n element vectors and A is an n by n unit, or non-unit, upper or lower triangular band matrix, with ( k + 1 ) diagonals.
No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine. So likeβ¦ check your matrix yourself, bestie, this routine is not your therapist. π
Parameters π
UPLO
UPLO is CHARACTER*1 β on entry, UPLO specifies whether the matrix is an upper or lower triangular matrix as follows:
UPLO = 'U'or'u'βAis an upper triangular matrix.UPLO = 'L'or'l'βAis a lower triangular matrix.
TRANS
TRANS is CHARACTER*1 β on entry, TRANS specifies the equations to be solved as follows:
TRANS = 'N'or'n'βA*x = b.TRANS = 'T'or't'βA**T*x = b.TRANS = 'C'or'c'βA**H*x = b.
DIAG
DIAG is CHARACTER*1 β on entry, DIAG specifies whether or not A is unit triangular as follows:
DIAG = 'U'or'u'βAis assumed to be unit triangular.DIAG = 'N'or'n'βAis not assumed to be unit triangular.
N
N is INTEGER β on entry, N specifies the order of the matrix A. N must be at least zero.
K
K is INTEGER β on entry with UPLO = 'U' or 'u', K specifies the number of super-diagonals of the matrix A. On entry with UPLO = 'L' or 'l', K specifies the number of sub-diagonals of the matrix A. K must satisfy 0 .le. K.
A
A is COMPLEX*16 array, dimension ( LDA, N )
Before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. The top left k by k triangle of the array A is not referenced.
The following program segment will transfer an upper triangular band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
M = K + 1 - J
DO 10, I = MAX( 1, J - K ), J
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced.
The following program segment will transfer a lower triangular band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
M = 1 - J
DO 10, I = J, MIN( N, J + K )
A( M + I, J ) = matrix( I, J )
10 CONTINUE
20 CONTINUE
Note that whenDIAG = 'U'or'u'the elements of the arrayAcorresponding to the diagonal elements of the matrix are not referenced, but are assumed to be unity. π«Ά
LDA
LDA is INTEGER β on entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ).
X
X is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n element right-hand side vector b. On exit, X is overwritten with the solution vector x. Glow up complete. π
INCX
INCX is INTEGER β on entry, INCX specifies the increment for the elements of X. INCX must not be zero.
Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details: π
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
subroutine ztpmv (character UPLO, character TRANS, character DIAG, integer N, complex*16, dimension(*) AP, complex*16, dimension(*) X, integer INCX)
ZTPMV β
Purpose: π
ZTPMV performs one of the matrix-vector operations
x := A*x, or x := A**T*x, or x := A**H*x,
where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix, supplied in packed form. Packed form, bestie β no wasted space, she's efficient. π
Parameters π
UPLO
UPLO is CHARACTER*1 β on entry, UPLO specifies whether the matrix is an upper or lower triangular matrix as follows:
UPLO = 'U'or'u'βAis an upper triangular matrix.UPLO = 'L'or'l'βAis a lower triangular matrix.
TRANS
TRANS is CHARACTER*1 β on entry, TRANS specifies the operation to be performed as follows:
TRANS = 'N'or'n'βx := A*x.TRANS = 'T'or't'βx := A**T*x.TRANS = 'C'or'c'βx := A**H*x.
DIAG
DIAG is CHARACTER*1 β on entry, DIAG specifies whether or not A is unit triangular as follows:
DIAG = 'U'or'u'βAis assumed to be unit triangular.DIAG = 'N'or'n'βAis not assumed to be unit triangular.
N
N is INTEGER β on entry, N specifies the order of the matrix A. N must be at least zero.
AP
AP is next upβ¦
APβ okay bestie, listen up πAPis aCOMPLEX*16array, and its dimension has to be at least( ( n*( n + 1 ) )/2 ). Before you enter withUPLO = 'U'or'u', the arrayAPmust contain the upper triangular matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 1, 2 )anda( 2, 2 )respectively, and so on. Before entry withUPLO = 'L'or'l', the arrayAPmust contain the lower triangular matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 2, 1 )anda( 3, 1 )respectively, and so on. Note that whenDIAG = 'U'or'u', the diagonal elements ofAare not referenced, but are assumed to be unity. πXβ soXis aCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain thenelement vectorx. On exit,Xis overwritten with the transformed vectorx. β¨INCXβ and finally for this one,INCXisINTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. π«
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details π₯
Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0
-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.
subroutine ztpsv (character UPLO, character TRANS, character DIAG, integer
N, complex*16, dimension(*) AP, complex*16, dimension(*) X, integer
INCX)
ZTPSV π
Purpose
ZTPSV solves one of the systems of equations
A*x = b, or A**T*x = b, or A**H*x = b,
where b and x are n element vectors and A is an n by n unit, or non-unit, upper or lower triangular matrix, supplied in packed form.
No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine. periodt. π«Ά
Parameters π
UPLOβUPLOisCHARACTER*1. On entry,UPLOspecifies whether the matrix is an upper or lower triangular matrix as follows:UPLO = 'U'or'u'Ais an upper triangular matrix.UPLO = 'L'or'l'Ais a lower triangular matrix.
TRANSβTRANSisCHARACTER*1. On entry,TRANSspecifies the equations to be solved as follows:TRANS = 'N'or'n'A*x = b.TRANS = 'T'or't'A**T*x = b.TRANS = 'C'or'c'A**H*x = b.
DIAGβDIAGisCHARACTER*1. On entry,DIAGspecifies whether or notAis unit triangular as follows:DIAG = 'U'or'u'Ais assumed to be unit triangular.DIAG = 'N'or'n'Ais not assumed to be unit triangular.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero.APβAPisCOMPLEX*16array, dimension at least( ( n*( n + 1 ) )/2 ). Before entry withUPLO = 'U'or'u', the arrayAPmust contain the upper triangular matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 1, 2 )anda( 2, 2 )respectively, and so on. Before entry withUPLO = 'L'or'l', the arrayAPmust contain the lower triangular matrix packed sequentially, column by column, so thatAP( 1 )containsa( 1, 1 ),AP( 2 )andAP( 3 )containa( 2, 1 )anda( 3, 1 )respectively, and so on. Note that whenDIAG = 'U'or'u', the diagonal elements ofAare not referenced, but are assumed to be unity.XβXisCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain thenelement right-hand side vectorb. On exit,Xis overwritten with the solution vectorx.INCXβINCXisINTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero.
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details π
Level 2 Blas routine.
-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.
subroutine ztrmv (character UPLO, character TRANS, character DIAG, integer
N, complex*16, dimension(lda,*) A, integer LDA, complex*16, dimension(*)
X, integer INCX)
ZTRMV π¦
Purpose
ZTRMV performs one of the matrix-vector operations
x := A*x, or x := A**T*x, or x := A**H*x,
where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix.
Parameters π
UPLOβUPLOisCHARACTER*1. On entry,UPLOspecifies whether the matrix is an upper or lower triangular matrix as follows:UPLO = 'U'or'u'Ais an upper triangular matrix.UPLO = 'L'or'l'Ais a lower triangular matrix.
TRANSβTRANSisCHARACTER*1. On entry,TRANSspecifies the operation to be performed as follows:TRANS = 'N'or'n'x := A*x.TRANS = 'T'or't'x := A**T*x.TRANS = 'C'or'c'x := A**H*x.
DIAGβDIAGisCHARACTER*1. On entry,DIAGspecifies whether or notAis unit triangular as follows:DIAG = 'U'or'u'Ais assumed to be unit triangular.DIAG = 'N'or'n'Ais not assumed to be unit triangular.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero.AβAisCOMPLEX*16array, dimension( LDA, N ). Before entry withUPLO = 'U'or'u', the leadingnbynupper triangular part of the arrayAmust contain the upper triangular matrix and the strictly lower triangular part ofAis not referenced. Before entry withUPLO = 'L'or'l', the leadingnbynlower triangular part of the arrayAmust contain the lower triangular matrix and the strictly upper triangular part ofAis not referenced. Note that whenDIAG = 'U'or'u', the diagonal elements ofAare not referenced either, but are assumed to be unity.LDAβLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ).XβXisCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain thenelement vectorx. On exit,Xis overwritten with the transformed vectorx.INCXβINCXisINTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero.
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details π
Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0
-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.
subroutine ztrsv (character UPLO, character TRANS, character DIAG, integer
N, complex*16, dimension(lda,*) A, integer LDA, complex*16, dimension(*)
X, integer INCX)
ZTRSV π
Purpose
ZTRSV solves one of the systems of equations
A*x = b, or A**T*x = b, or A**H*x = b,
where b and x are n element vectors and A is an n by n unit, or non-unit, upper or lower triangular matrix.
No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine. π«Ά
Parameters π
UPLOβUPLOisCHARACTER*1. On entry,UPLOspecifies whether the matrix is an upper or lower triangular matrix as follows:UPLO = 'U'or'u'Ais an upper triangular matrix.UPLO = 'L'or'l'Ais a lower triangular matrix.
TRANSβTRANSisCHARACTER*1. On entry,TRANSspecifies the equations to be solved as follows:TRANS = 'N'or'n'A*x = b.TRANS = 'T'or't'A**T*x = b.TRANS = 'C'or'c'A**H*x = b.
DIAGβDIAGisCHARACTER*1. On entry,DIAGspecifies whether or notAis unit triangular as follows:DIAG = 'U'or'u'Ais assumed to be unit triangular.DIAG = 'N'or'n'Ais not assumed to be unit triangular.
NβNisINTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero.Aβ
okay so we're back in the argument tea β and this part is serving triangular realness, so bestie, lock in:
AβAisCOMPLEX*16array, dimension( LDA, N ). Before entry withUPLO = 'U'or'u', the leadingnbynupper triangular part of the arrayAmust contain the upper triangular matrix and the strictly lower triangular part ofAis not referenced. Before entry withUPLO = 'L'or'l', the leadingnbynlower triangular part of the arrayAmust contain the lower triangular matrix and the strictly upper triangular part ofAis not referenced. Note that whenDIAG = 'U'or'u', the diagonal elements ofAare not referenced either, but are assumed to be unity. periodt, the triangle is the moment πLDAβLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ). like, don't try to be cute and make it smaller, okay? πXβXisCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain thenelement right-hand side vectorb. On exit,Xis overwritten with the solution vectorx. she comes in asband leaves asxβ glow-up fr fr β¨INCXβINCXisINTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. do NOT set this to zero, bestie, it's giving undefined chaos π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the academic royalty of linear algebra, no cap π
π« Further Details π«
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
literal legends wrote this in 1986 and we're still using it β main character energy forever π
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole vibe, bestie π this was LAPACK version 3.11.0, dated Sun Nov 27 2022, from the complex16_blas_level2(3) page. stay triangular, stay slay, and never let anyone tell you your INCX is zero β¨π
π¦
π¦ where this page comes from
- debian bookworm: liblapack-doc 3.11.0-2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms