complex16_blas_level3(3)
πΈ complex16_blas_level3(3) β LAPACK πΈ
okay bestie, welcome to the complex16 BLAS level 3 glow-up π this is the group chat for all the big matrix-matrix routines, and we're gonna go through every single one. no cap, we're keeping all the facts, just making it cute. periodt.
β¨ NAME β¨
complex16_blas_level3 - complex16
π¦ SYNOPSIS π¦
Functions
subroutine zgemm (TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)β ZGEMMsubroutine zhemm (SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)β ZHEMMsubroutine zher2k (UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)β ZHER2Ksubroutine zherk (UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)β ZHERKsubroutine zsymm (SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)β ZSYMMsubroutine zsyr2k (UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)β ZSYR2Ksubroutine zsyrk (UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)β ZSYRKsubroutine ztrmm (SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)β ZTRMMsubroutine ztrsm (SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)β ZTRSM
π Detailed Description π
This is the group of complex16 LEVEL 3 BLAS routines. β¨
π Function Documentation π
subroutine zgemm (character TRANSA, character TRANSB, integer M, integer N, integer K, complex*16 ALPHA, complex*16, dimension(lda,) A, integer LDA, complex16, dimension(ldb,) B, integer LDB, complex16 BETA, complex*16, dimension(ldc,*) C, integer LDC)
ZGEMM
Purpose:
ZGEMM performs one of the matrix-matrix operations
C := alpha*op( A )*op( B ) + beta*C,
where op( X ) is one of
op( X ) = X or op( X ) = X**T or op( X ) = X**H,
alpha and beta are scalars, and A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
Parameters
- TRANSA β so like, TRANSA is a
CHARACTER*1. On entry, TRANSA specifies the form of op( A ) to be used in the matrix multiplication as follows:TRANSA = 'N' or 'n', op( A ) = A.TRANSA = 'T' or 't', op( A ) = A**T.TRANSA = 'C' or 'c', op( A ) = A**H.
- TRANSB β
CHARACTER*1. On entry, TRANSB specifies the form of op( B ) to be used in the matrix multiplication as follows:TRANSB = 'N' or 'n', op( B ) = B.TRANSB = 'T' or 't', op( B ) = B**T.TRANSB = 'C' or 'c', op( B ) = B**H.
- M β
INTEGER. On entry, M specifies the number of rows of the matrix op( A ) and of the matrix C. M must be at least zero. - N β
INTEGER. On entry, N specifies the number of columns of the matrix op( B ) and the number of columns of the matrix C. N must be at least zero. - K β
INTEGER. On entry, K specifies the number of columns of the matrix op( A ) and the number of rows of the matrix op( B ). K must be at least zero. - ALPHA β
COMPLEX*16. On entry, ALPHA specifies the scalar alpha. - A β
COMPLEX*16 array, dimension ( LDA, ka ), where ka is k when TRANSA = 'N' or 'n', and is m otherwise. Before entry with TRANSA = 'N' or 'n', the leading m by k part of the array A must contain the matrix A, otherwise the leading k by m part of the array A must contain the matrix A. - LDA β
INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When TRANSA = 'N' or 'n' then LDA must be at leastmax( 1, m ), otherwise LDA must be at leastmax( 1, k ). - B β
COMPLEX*16 array, dimension ( LDB, kb ), where kb is n when TRANSB = 'N' or 'n', and is k otherwise. Before entry with TRANSB = 'N' or 'n', the leading k by n part of the array B must contain the matrix B, otherwise the leading n by k part of the array B must contain the matrix B. - LDB β
INTEGER. On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. When TRANSB = 'N' or 'n' then LDB must be at leastmax( 1, k ), otherwise LDB must be at leastmax( 1, n ). - BETA β
COMPLEX*16. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. - C β
COMPLEX*16 array, dimension ( LDC, N ). Before entry, the leading m by n part of the array C must contain the matrix C, except when beta is zero, in which case C need not be set on entry. On exit, the array C is overwritten by the m by n matrix( alpha*op( A )*op( B ) + beta*C ). - LDC β
INTEGER. On entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at leastmax( 1, m ).
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details:
Level 3 Blas routine.
-- Written on 8-February-1989. Jack Dongarra, Argonne National Laboratory. Iain Duff, AERE Harwell. Jeremy Du Croz, Numerical Algorithms Group Ltd. Sven Hammarling, Numerical Algorithms Group Ltd.
subroutine zhemm (character SIDE, character UPLO, integer M, integer N, complex*16 ALPHA, complex*16, dimension(lda,) A, integer LDA, complex16, dimension(ldb,) B, integer LDB, complex16 BETA, complex*16, dimension(ldc,*) C, integer LDC)
ZHEMM
Purpose:
ZHEMM performs one of the matrix-matrix operations
C := alpha*A*B + beta*C,
or
C := alpha*B*A + beta*C,
where alpha and beta are scalars, A is an hermitian matrix and B and C are m by n matrices.
Parameters
- SIDE β
CHARACTER*1. On entry, SIDE specifies whether the hermitian matrix A appears on the left or right in the operation as follows:SIDE = 'L' or 'l'C := alpha*A*B + beta*C,SIDE = 'R' or 'r'C := alpha*B*A + beta*C,
- UPLO β
CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the hermitian matrix A is to be referenced as follows:UPLO = 'U' or 'u'Only the upper triangular part of the hermitian matrix is to be referenced.UPLO = 'L' or 'l'Only the lower triangular part of the hermitian matrix is to be referenced.
- M β
INTEGER. On entry, M specifies the number of rows of the matrix C. M must be at least zero. - N β
INTEGER. On entry, N specifies the number of columns of the matrix C. N must be at least zero. - ALPHA β
COMPLEX*16. On entry, ALPHA specifies the scalar alpha. - A β
COMPLEX*16 array, dimension ( LDA, ka ), where ka is m when SIDE = 'L' or 'l' and is n otherwise. Before entry with SIDE = 'L' or 'l', the m by m part of the array A must contain the hermitian matrix, such that when UPLO = 'U' or 'u', the leading m by m upper triangular part of the array A must contain the upper triangular part of the hermitian matrix and the strictly lower triangular part of A is not referenced, and when UPLO = 'L' or 'l', the leading m by m 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. Before entry with SIDE = 'R' or 'r', the n by n part of the array A must contain the hermitian matrix, such that when UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular part of the hermitian matrix and the strictly lower triangular part of A is not referenced, and when 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. Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero. - LDA β
INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When SIDE = 'L' or 'l' then LDA must be at leastmax( 1, m ), otherwise LDA must be at leastmax( 1, n ). - B β
COMPLEX*16 array, dimension ( LDB, N ). Before entry, the leading m by n part of the array B must contain the matrix B. - LDB β
INTEGER. On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at leastmax( 1, m ). - BETA β
COMPLEX*16. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. - C β
COMPLEX*16 array, dimension ( LDC, N ). Before entry, the leading m by n part of the array C must contain the matrix C, except when beta is zero, in which case C need not be set on entry. On exit, the array C is overwritten by the m by n updated matrix. - LDC β
LDCβLDCisINTEGER. On entry,LDCspecifies the first dimension ofCas declared in the calling (sub) program.LDCmust be at leastmax( 1, m ).
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
π zher2k β ZHER2K
subroutine zher2k (character UPLO, character TRANS, integer N, integer K,
complex*16 ALPHA, complex*16, dimension(lda,*) A, integer LDA,
complex*16, dimension(ldb,*) B, integer LDB, double precision BETA,
complex*16, dimension(ldc,*) C, integer LDC)
β¨ Purpose
okay bestie, ZHER2K performs one of the hermitian rank 2k operations:
C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C,
or
C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C,
where alpha and beta are scalars with beta real, C is an n by n hermitian matrix and A and B are n by k matrices in the first case and k by n matrices in the second case. π
πΈ Parameters
UPLOβUPLOisCHARACTER*1. On entry,UPLOspecifies whether the upper or lower triangular part of the arrayCis to be referenced as follows:UPLO = 'U' or 'u'β Only the upper triangular part ofCis to be referenced.UPLO = 'L' or 'l'β Only the lower triangular part ofCis to be referenced.
TRANSβTRANSisCHARACTER*1. On entry,TRANSspecifies the operation to be performed as follows:TRANS = 'N' or 'n'βC := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C.TRANS = 'C' or 'c'βC := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C.
NβNisINTEGER. On entry,Nspecifies the order of the matrixC.Nmust be at least zero.KβKisINTEGER. On entry withTRANS = 'N' or 'n',Kspecifies the number of columns of the matricesAandB, and on entry withTRANS = 'C' or 'c',Kspecifies the number of rows of the matricesAandB.Kmust be at least zero.ALPHAβALPHAisCOMPLEX*16. On entry,ALPHAspecifies the scalaralpha.AβAisCOMPLEX*16array, dimension( LDA, ka ), wherekaiskwhenTRANS = 'N' or 'n', and isnotherwise. Before entry withTRANS = 'N' or 'n', the leadingnbykpart of the arrayAmust contain the matrixA, otherwise the leadingkbynpart of the arrayAmust contain the matrixA.LDAβLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenTRANS = 'N' or 'n'thenLDAmust be at leastmax( 1, n ), otherwiseLDAmust be at leastmax( 1, k ).BβBisCOMPLEX*16array, dimension( LDB, kb ), wherekbiskwhenTRANS = 'N' or 'n', and isnotherwise. Before entry withTRANS = 'N' or 'n', the leadingnbykpart of the arrayBmust contain the matrixB, otherwise the leadingkbynpart of the arrayBmust contain the matrixB.LDBβLDBisINTEGER. On entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program. WhenTRANS = 'N' or 'n'thenLDBmust be at leastmax( 1, n ), otherwiseLDBmust be at leastmax( 1, k ). Unchanged on exit.BETAβBETAisDOUBLE PRECISION. On entry,BETAspecifies the scalarbeta.CβCisCOMPLEX*16array, dimension( LDC, N ).- Before entry with
UPLO = 'U' or 'u', the leadingnbynupper triangular part of the arrayCmust contain the upper triangular part of the hermitian matrix and the strictly lower triangular part ofCis not referenced. On exit, the upper triangular part of the arrayCis overwritten by the upper triangular part of the updated matrix. - Before entry with
UPLO = 'L' or 'l', the leadingnbynlower triangular part of the arrayCmust contain the lower triangular part of the hermitian matrix and the strictly upper triangular part ofCis not referenced. On exit, the lower triangular part of the arrayCis 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.
- Before entry with
LDCβLDCisINTEGER. On entry,LDCspecifies the first dimension ofCas declared in the calling (sub) program.LDCmust be at leastmax( 1, n ).
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
-- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
Ed Anderson, Cray Research Inc.
π zherk β ZHERK
subroutine zherk (character UPLO, character TRANS, integer N, integer K,
double precision ALPHA, complex*16, dimension(lda,*) A, integer LDA,
double precision BETA, complex*16, dimension(ldc,*) C, integer LDC)
β¨ Purpose
ZHERK performs one of the hermitian rank k operations:
C := alpha*A*A**H + beta*C,
or
C := alpha*A**H*A + beta*C,
where alpha and beta are real scalars, C is an n by n hermitian matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. π¦
πΈ Parameters
UPLOβUPLOisCHARACTER*1. On entry,UPLOspecifies whether the upper or lower triangular part of the arrayCis to be referenced as follows:UPLO = 'U' or 'u'β Only the upper triangular part ofCis to be referenced.UPLO = 'L' or 'l'β Only the lower triangular part ofCis to be referenced.
TRANSβTRANSisCHARACTER*1. On entry,TRANSspecifies the operation to be performed as follows:TRANS = 'N' or 'n'βC := alpha*A*A**H + beta*C.TRANS = 'C' or 'c'βC := alpha*A**H*A + beta*C.
NβNisINTEGER. On entry,Nspecifies the order of the matrixC.Nmust be at least zero.KβKisINTEGER. On entry withTRANS = 'N' or 'n',Kspecifies the number of columns of the matrixA, and on entry withTRANS = 'C' or 'c',Kspecifies the number of rows of the matrixA.Kmust be at least zero.ALPHAβALPHAisDOUBLE PRECISION. On entry,ALPHAspecifies the scalaralpha.AβAisCOMPLEX*16array, dimension( LDA, ka ), wherekaiskwhenTRANS = 'N' or 'n', and isnotherwise. Before entry withTRANS = 'N' or 'n', the leadingnbykpart of the arrayAmust contain the matrixA, otherwise the leadingkbynpart of the arrayAmust contain the matrixA.LDAβLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenTRANS = 'N' or 'n'thenLDAmust be at leastmax( 1, n ), otherwiseLDAmust be at leastmax( 1, k ).BETAβBETAisDOUBLE PRECISION. On entry,BETAspecifies the scalarbeta.CβCisCOMPLEX*16array, dimension( LDC, N ).- Before entry with
UPLO = 'U' or 'u', the leadingnbynupper triangular part of the arrayCmust contain the upper triangular part of the hermitian matrix and the strictly lower triangular part ofCis not referenced. On exit, the upper triangular part of the arrayCis overwritten by the upper triangular part of the updated matrix. - Before entry with
UPLO = 'L' or 'l', the leadingnbynlower triangular part of the arrayCmust contain the lower triangular part of the hermitian matrix and the strictly upper triangular part ofCis not referenced. On exit, the lower triangular part of the arrayCis 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.
- Before entry with
LDCβLDCisINTEGER. On entry,LDCspecifies the first dimension ofCas declared in the calling (sub) program.LDCmust be at leastmax( 1, n ).
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
-- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
Ed Anderson, Cray Research Inc.
Okay so those are the receipts, bestie β the whole glow-up history of this routine, from the original 1989 era girlies to that 1993 little tweak where C(J,J) gets set to DBLE( C(J,J) ) when BETA = 1. Ed Anderson from Cray Research did that one. Iconic of her. π
πΈ zsymm πΈ
SYMMETRIC MATRIX TIMES MATRIX, BUT MAKE IT COMPLEX*16
subroutine zsymm (character SIDE, character UPLO, integer M, integer N,
complex*16 ALPHA, complex*16, dimension(lda,*) A, integer LDA,
complex*16, dimension(ldb,*) B, integer LDB, complex*16 BETA,
complex*16, dimension(ldc,*) C, integer LDC)
ZSYMM
π Purpose
So ZSYMM does one of these two matrix-matrix situations, and you get to pick which:
C := alpha*A*B + beta*C,
or
C := alpha*B*A + beta*C,
where alpha and beta are scalars, A is a symmetric matrix, and B and C are m by n matrices. No cap, that's the whole vibe.
β¨ Parameters
SIDEβSIDEisCHARACTER*1. On entry,SIDEsays whether that symmetric matrixAis sitting on the left or on the right of the operation, like so:
SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
UPLOβUPLOisCHARACTER*1. On entry,UPLOtells us whether we're reading the upper or the lower triangular part of that symmetric matrixA:
UPLO = 'U' or 'u' Only the upper triangular part of the
symmetric matrix is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of the
symmetric matrix is to be referenced.
MβMisINTEGER. On entry,Mis the number of rows of matrixC. And listen βMmust be at least zero. π«ΆNβNisINTEGER. On entry,Nis the number of columns of matrixC. Also must be at least zero.ALPHAβALPHAisCOMPLEX*16. On entry,ALPHAis the scalaralpha. That's it, that's the girl.AβAisCOMPLEX*16array, dimension( LDA, ka ), wherekaismwhenSIDE = 'L'or'l'and isnotherwise.
Before entry with SIDE = 'L' or 'l', the m by m part of the array A must contain the symmetric matrix, such that when UPLO = 'U' or 'u', the leading m by m upper triangular part of the array A must contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part of A is not referenced. And when UPLO = 'L' or 'l', the leading m by m lower triangular part of the array A must contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part of A is not referenced.
Before entry with SIDE = 'R' or 'r', the n by n part of the array A must contain the symmetric matrix, such that when UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part of A is not referenced. And when UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part of A is not referenced.
LDAβLDAisINTEGER. On entry,LDAis the first dimension ofAas declared in the calling (sub)program. WhenSIDE = 'L'or'l'thenLDAmust be at leastmax( 1, m ), otherwiseLDAmust be at leastmax( 1, n ). πBβBisCOMPLEX*16array, dimension( LDB, N ). Before entry, the leadingmbynpart of the arrayBmust contain the matrixB. Standard.LDBβLDBisINTEGER. On entry,LDBis the first dimension ofBas declared in the calling (sub)program.LDBmust be at leastmax( 1, m ).BETAβBETAisCOMPLEX*16. On entry,BETAis the scalarbeta. And here's the fun part β whenBETAis supplied as zero, thenCneed not be set on input. Free real estate. πCβCisCOMPLEX*16array, dimension( LDC, N ). Before entry, the leadingmbynpart of the arrayCmust contain the matrixC, except whenbetais zero, in which caseCneed not be set on entry. On exit, the arrayCis overwritten by thembynupdated matrix. She's changed. She's grown. π¦LDCβLDCisINTEGER. On entry,LDCis the first dimension ofCas declared in the calling (sub)program.LDCmust be at leastmax( 1, m ).
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
π zsyr2k π
SYMMETRIC RANK 2K UPDATE, COMPLEX*16 EDITION
subroutine zsyr2k (character UPLO, character TRANS, integer N, integer K,
complex*16 ALPHA, complex*16, dimension(lda,*) A, integer LDA,
complex*16, dimension(ldb,*) B, integer LDB, complex*16 BETA,
complex*16, dimension(ldc,*) C, integer LDC)
ZSYR2K
π Purpose
ZSYR2K performs one of the symmetric rank 2k operations:
C := alpha*A*B**T + alpha*B*A**T + beta*C,
or
C := alpha*A**T*B + alpha*B**T*A + beta*C,
where alpha and beta are scalars, C is an n by n symmetric matrix, and A and B are n by k matrices in the first case, and k by n matrices in the second case. Two whole terms, bestie. She's doing the most and we love her for it. β¨
β¨ Parameters
UPLOβUPLOisCHARACTER*1. On entry,UPLOsays whether the upper or the lower triangular part of the arrayCis to be referenced:
UPLO = 'U' or 'u' Only the upper triangular part of C
is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of C
is to be referenced.
TRANSβTRANSisCHARACTER*1. On entry,TRANSpicks which operation is happening:
TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
beta*C.
TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
beta*C.
NβNisINTEGER. On entry,Nis the order of matrixC.Nmust be at least zero. π«ΆKβKisINTEGER. On entry withTRANS = 'N'or'n',Kis the number of columns of the matricesAandB, and on entry withTRANS = 'T'or't',Kis the number of rows of the matricesAandB.Kmust be at least zero.ALPHAβALPHAisCOMPLEX*16. On entry,ALPHAis the scalaralpha.AβAisCOMPLEX*16array, dimension( LDA, ka ), wherekaiskwhenTRANS = 'N'or'n', and isnotherwise. Before entry withTRANS = 'N'or'n', the leadingnbykpart of the arrayAmust contain the matrixA, otherwise the leadingkbynpart of the arrayAmust contain the matrixA.LDAβLDAisINTEGER. On entry,LDAis the first dimension ofAas declared in the calling (sub)program. WhenTRANS = 'N'or'n'thenLDAmust be at leastmax( 1, n ), otherwiseLDAmust be at leastmax( 1, k ).BβBisCOMPLEX*16array, dimension( LDB, kb ), wherekbiskwhenTRANS = 'N'or'n', and isnotherwise. Before entry withTRANS = 'N'or'n', the leadingnbykpart of the arrayBmust contain the matrixB, otherwise the leadingkbynpart of the arrayBmust contain the matrixB.LDBβLDBisINTEGER. On entry,LDBis the first dimension ofBas declared in the calling (sub)program. WhenTRANS = 'N'or'n'thenLDBmust be at leastmax( 1, n ), otherwiseLDBmust be at leastmax( 1, k ).BETAβBETAisCOMPLEX*16. On entry,BETAis the scalarbeta. Just beta. Living her simple life.CβCisCOMPLEX*16array, dimension( LDC, N ).
Before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of the array C must contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of the array C is 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 C must contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of the array C is overwritten by the lower triangular part of the updated matrix.
Only half of her gets touched, and honestly? That's the whole point. Symmetry ate. π
LDCβLDCisINTEGER. On entry,LDCis the first dimension ofCas declared in the calling (sub)program.LDCmust be at leastmax( 1, n ).
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
πΈ zsyrk β the symmetric rank-k moment πΈ
subroutine zsyrk (character UPLO, character TRANS, integer N, integer K,
complex*16 ALPHA, complex*16, dimension(lda,*) A, integer LDA,
complex*16 BETA, complex*16, dimension(ldc,*) C, integer LDC)
Purpose
Okay bestie, ZSYRK does one of the symmetric rank k operations, and you're getting exactly one of these two:
C := alpha*A*A**T + beta*C,
or
C := alpha*A**T*A + beta*C,
where alpha and beta are scalars, C is an n by n symmetric matrix, and A is an n by k matrix in the first case and a k by n matrix in the second case. Slay. π
Parameters
UPLOβCHARACTER*1. On entry,UPLOspecifies whether the upper or lower triangular part of the arrayCis to be referenced, like so:UPLO = 'U' or 'u'β only the upper triangular part ofCis to be referenced.UPLO = 'L' or 'l'β only the lower triangular part ofCis to be referenced.
TRANSβCHARACTER*1. On entry,TRANSspecifies the operation to be performed, as follows:TRANS = 'N' or 'n'βC := alpha*A*A**T + beta*C.TRANS = 'T' or 't'βC := alpha*A**T*A + beta*C.
NβINTEGER. On entry,Nspecifies the order of the matrixC.Nmust be at least zero. (no negative orders, we don't do that here π«Ά)KβINTEGER. On entry withTRANS = 'N' or 'n',Kspecifies the number of columns of the matrixA; and on entry withTRANS = 'T' or 't',Kspecifies the number of rows of the matrixA.Kmust be at least zero.ALPHAβCOMPLEX*16. On entry,ALPHAspecifies the scalaralpha. It's giving scalar energy. β¨AβCOMPLEX*16array, dimension( LDA, ka ), wherekaiskwhenTRANS = 'N' or 'n', and isnotherwise. Before entry withTRANS = 'N' or 'n', the leading n by k part of the arrayAmust contain the matrixA; otherwise the leading k by n part of the arrayAmust contain the matrixA.LDAβINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenTRANS = 'N' or 'n'thenLDAmust be at leastmax( 1, n ); otherwiseLDAmust be at leastmax( 1, k ).BETAβCOMPLEX*16. On entry,BETAspecifies the scalarbeta. Bestie, the other scalar. πCβCOMPLEX*16array, dimension( LDC, N ).- Before entry with
UPLO = 'U' or 'u', the leading n by n upper triangular part of the arrayCmust contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part ofCis not referenced. On exit, the upper triangular part of the arrayCis 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 arrayCmust contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part ofCis not referenced. On exit, the lower triangular part of the arrayCis overwritten by the lower triangular part of the updated matrix.
- Before entry with
LDCβINTEGER. On entry,LDCspecifies the first dimension ofCas declared in the calling (sub) program.LDCmust be at leastmax( 1, n ).
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
π¦ ztrmm β triangular matrix-matrix multiply, main character edition π¦
subroutine ztrmm (character SIDE, character UPLO, character TRANSA,
character DIAG, integer M, integer N, complex*16 ALPHA, complex*16,
dimension(lda,*) A, integer LDA, complex*16, dimension(ldb,*) B, integer
LDB)
Purpose
ZTRMM performs one of the matrix-matrix operations
B := alpha*op( A )*B, or B := alpha*B*op( A )
where alpha is a scalar, B is an m by n matrix, A is a unit, or non-unit, upper or lower triangular matrix, and op( A ) is one of
op( A ) = A or op( A ) = A**T or op( A ) = A**H.
Like, three whole options for op( A ). Choices are iconic. π
Parameters
SIDEβCHARACTER*1. On entry,SIDEspecifies whetherop( A )multipliesBfrom the left or right, as follows:SIDE = 'L' or 'l'βB := alpha*op( A )*B.SIDE = 'R' or 'r'βB := alpha*B*op( A ).
UPLOβCHARACTER*1. On entry,UPLOspecifies whether the matrixAis 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.
TRANSAβCHARACTER*1. On entry,TRANSAspecifies the form ofop( A )to be used in the matrix multiplication, as follows:TRANSA = 'N' or 'n'βop( A ) = A.TRANSA = 'T' or 't'βop( A ) = A**T.TRANSA = 'C' or 'c'βop( A ) = A**H.
DIAGβCHARACTER*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.
MβINTEGER. On entry,Mspecifies the number of rows ofB.Mmust be at least zero.NβINTEGER. On entry,Nspecifies the number of columns ofB.Nmust be at least zero.ALPHAβCOMPLEX*16. On entry,ALPHAspecifies the scalaralpha. Whenalphais zero thenAis not referenced andBneed not be set before entry. Free real estate, lowkey. πAβCOMPLEX*16array, dimension( LDA, k ), wherekismwhenSIDE = 'L' or 'l'and isnwhenSIDE = 'R' or 'r'.- Before entry with
UPLO = 'U' or 'u', the leading k by k upper triangular part of the arrayAmust contain the upper triangular matrix, and the strictly lower triangular part ofAis not referenced. - Before entry with
UPLO = 'L' or 'l', the leading k by k lower triangular part of the arrayAmust contain the lower triangular matrix, and the strictly upper triangular part ofAis not referenced. - Note that when
DIAG = 'U' or 'u', the diagonal elements ofAare not referenced either, but are assumed to be unity.
- Before entry with
LDAβINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L' or 'l'thenLDAmust be at leastmax( 1, m ); whenSIDE = 'R' or 'r'thenLDAmust be at leastmax( 1, n ).BβCOMPLEX*16array, dimension( LDB, N ). Before entry, the leading m by n part of the arrayBmust contain the matrixB, and on exit is overwritten by the transformed matrix.LDBβINTEGER. On entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ).
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
π ztrsm β triangular solve, she's solving for X π
subroutine ztrsm (character SIDE, character UPLO, character TRANSA,
character DIAG, integer M, integer N, complex*16 ALPHA, complex*16,
dimension(lda,*) A, integer LDA, complex*16, dimension(ldb,*) B, integer
LDB)
Purpose
ZTRSM solves one of the matrix equations
op( A )*X = alpha*B, or X*op( A ) = alpha*B,
where alpha is a scalar, X and B are m by n matrices, A is a unit, or non-unit, upper or lower triangular matrix, and op( A ) is one of
op( A ) = A or op( A ) = A**T or op( A ) = A**H.
The matrix X is overwritten on B. So like, B walked in and X walked out. Periodt. π
Parameters
SIDEβCHARACTER*1. On entry,SIDEspecifies whetherop( A )appears on the left or right ofX, as follows:SIDE = 'L' or 'l'βop( A )*X = alpha*B.SIDE = 'R' or 'r'βX*op( A ) = alpha*B.
UPLOβCHARACTER*1. On entry,UPLOspecifies whether the matrixAis 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.
TRANSAβCHARACTER*1. On entry,TRANSAspecifies the form ofop( A )to be used in the matrix multiplication, as follows:TRANSA = 'N' or 'n'βop( A ) = A.TRANSA = 'T' or 't'βop( A ) = A**T.TRANSA = 'C' or 'c'βop( A ) = A**H.
DIAG
okay so bestie, we're in the home stretch of these parameters π let's finish strong β¨
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.
MisINTEGERβ On entry,Mspecifies the number of rows ofB.Mmust be at least zero.NisINTEGERβ On entry,Nspecifies the number of columns ofB.Nmust be at least zero.ALPHAisCOMPLEX*16β On entry,ALPHAspecifies the scalar alpha. When alpha is zero thenAis not referenced andBneed not be set before entry.AisCOMPLEX*16array, dimension( LDA, k ), wherekismwhenSIDE = 'L'or'l'andkisnwhenSIDE = 'R'or'r'.- Before entry with
UPLO = 'U'or'u', the leadingkbykupper triangular part of the arrayAmust contain the upper triangular matrix and the strictly lower triangular part ofAis not referenced. - Before entry with
UPLO = 'L'or'l', the leadingkbyklower triangular part of the arrayAmust contain the lower triangular matrix and the strictly upper triangular part ofAis not referenced. - Note that when
DIAG = 'U'or'u', the diagonal elements ofAare not referenced either, but are assumed to be unity.
- Before entry with
LDAisINTEGERβ On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L'or'l'thenLDAmust be at leastmax( 1, m ), whenSIDE = 'R'or'r'thenLDAmust be at leastmax( 1, n ).BisCOMPLEX*16array, dimension( LDB, N )β Before entry, the leadingmbynpart of the arrayBmust contain the right-hand side matrixB, and on exit is overwritten by the solution matrixX.LDBisINTEGERβ On entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ).
β¨ Author β¨
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
β¨ Further Details β¨
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
β¨ Author β¨
Generated automatically by Doxygen for LAPACK from the source code.
and that's a wrap on the whole page, bestie! this iconic piece of LAPACK lore is Version 3.11.0, dated Sun Nov 27 2022, and it's the complex16_blas_level3(3) man page. stay slay, stay linear algebra-ing πβ¨π«Ά
π¦ 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