BLAS/SRC/ztrmm.f(3)
π BLAS/SRC/ztrmm.f(3) β from the Library Functions Manual, bestie
okay so picture this: it's BLAS/SRC/ztrmm.f(3), and the manual it lives in is literally called the Library Functions Manual. Cute. Let's get into it β¨
π NAME π
BLAS/SRC/ztrmm.f β that's the whole name, that's the whole vibe. This is the manpage for the file that holds ztrmm. π¦
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ztrmm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)β the one and onlyZTRMMπ
π Function/Subroutine Documentation π
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)
ZTRMM π«Ά (yes that's the signature up there, character for character, no cap)
πΈ 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.!>
so like. it does triangular matrix times matrix things. main character energy fr fr π₯
π§ PARAMETERS π§
SIDE
!> SIDE is CHARACTER*1!> On entry, SIDE specifies whether op( A ) multiplies B from!> the left or right as follows:!>!> SIDE = 'L' or 'l' B := alpha*op( A )*B.!>!> SIDE = 'R' or 'r' B := alpha*B*op( A ).!>
left or right, babe β pick your lane π
UPLO
!> UPLO is CHARACTER*1!> On entry, UPLO specifies whether the matrix A 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.!>
upper girlie or lower girlie, your call π
TRANSA
!> TRANSA is 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.!>
no transpose, transpose, or conjugate transpose β the full trio, iconic π
DIAG
!> DIAG is CHARACTER*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.!>
is the diagonal all ones or not, that's the whole question π
M
!> M is INTEGER!> On entry, M specifies the number of rows of B. M must be at!> least zero.!>
rows of B. M must be at least zero β don't be out here passing negatives π
N
!> N is INTEGER!> On entry, N specifies the number of columns of B. N must be!> at least zero.!>
columns of B. also at least zero. rules are rules β¨
ALPHA
!> ALPHA is COMPLEX*16!> On entry, ALPHA specifies the scalar alpha. When alpha is!> zero then A is not referenced and B need not be set before!> entry.!>
not me pointing out that if alpha is zero, A doesn't even get looked at and B doesn't need to be set before entry π free pass honestly
A
!> A is COMPLEX*16 array, dimension ( LDA, k ), where k is m!> when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.!> Before entry with UPLO = 'U' or 'u', the leading k by k!> upper triangular part of the array A must contain the upper!> triangular matrix and the strictly lower triangular part of!> A is not referenced.!> Before entry with UPLO = 'L' or 'l', the leading k by k!> lower triangular part of the array A must contain the lower!> triangular matrix and the strictly upper triangular part of!> A is not referenced.!> Note that when DIAG = 'U' or 'u', the diagonal elements of!> A are not referenced either, but are assumed to be unity.!>
so k is m when SIDE = 'L' or 'l', and n when SIDE = 'R' or 'r'. the half you don't need? not referenced, ignored, unbothered π
and if DIAG = 'U' or 'u' the diagonal elements aren't referenced either β they're just assumed to be unity. trust.
LDA
!> LDA is 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 least max( 1, m ), when SIDE = 'R' or 'r'!> then LDA must be at least max( 1, n ).!>
leading dimension of A: at least max( 1, m ) for SIDE = 'L' or 'l', at least max( 1, n ) for SIDE = 'R' or 'r'. memorize it, bestie π
B
!> B is COMPLEX*16 array, dimension ( LDB, N ).!> Before entry, the leading m by n part of the array B must!> contain the matrix B, and on exit is overwritten by the!> transformed matrix.!>
B goes in, transformed B comes out. glow-up arc, literally πΈ
LDB
!> LDB is INTEGER!> On entry, LDB specifies the first dimension of B as declared!> in the calling (sub) program. LDB must be at least!> max( 1, m ).!>
LDB must be at least max( 1, m ). no exceptions, we don't do that here π₯
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad showed up π«Ά
β 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.!>
Level 3 BLAS routine, written on 8-February-1989 by Jack Dongarra (Argonne National Laboratory), Iain Duff (AERE Harwell), Jeremy Du Croz (Numerical Algorithms Group Ltd.) and Sven Hammarling (Numerical Algorithms Group Ltd.). legends, honestly π
Definition at line 176 of file ztrmm.f. π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (the robot did this one, not me π€)
and that's the whole page, bestie! footer tea: this is LAPACK, Version 3.12.0, and the page you just read is BLAS/SRC/ztrmm.f(3). go forth and multiply your triangular matrices πβ¨π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms