.TH "trmm" 3 "Wed Feb 7 2024 11:30:40" "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME trmm \- trmm: triangular matrix-matrix multiply .SH SYNOPSIS .br .PP .SS "Functions" .in +1c .ti -1c .RI "subroutine \fBctrmm\fP (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)" .br .RI "\fBCTRMM\fP " .ti -1c .RI "subroutine \fBdtrmm\fP (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)" .br .RI "\fBDTRMM\fP " .ti -1c .RI "subroutine \fBstrmm\fP (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)" .br .RI "\fBSTRMM\fP " .ti -1c .RI "subroutine \fBztrmm\fP (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)" .br .RI "\fBZTRMM\fP " .in -1c .SH "Detailed Description" .PP .SH "Function Documentation" .PP .SS "subroutine ctrmm (character side, character uplo, character transa, character diag, integer m, integer n, complex alpha, complex, dimension(lda,*) a, integer lda, complex, dimension(ldb,*) b, integer ldb)" .PP \fBCTRMM\fP .PP \fBPurpose:\fP .RS 4 .PP .nf CTRMM 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\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fISIDE\fP .PP .nf 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 )\&. .fi .PP .br \fIUPLO\fP .PP .nf 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\&. .fi .PP .br \fITRANSA\fP .PP .nf 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\&. .fi .PP .br \fIDIAG\fP .PP .nf 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\&. .fi .PP .br \fIM\fP .PP .nf M is INTEGER On entry, M specifies the number of rows of B\&. M must be at least zero\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER On entry, N specifies the number of columns of B\&. N must be at least zero\&. .fi .PP .br \fIALPHA\fP .PP .nf ALPHA is COMPLEX On entry, ALPHA specifies the scalar alpha\&. When alpha is zero then A is not referenced and B need not be set before entry\&. .fi .PP .br \fIA\fP .PP .nf A is COMPLEX 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\&. .fi .PP .br \fILDA\fP .PP .nf 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 )\&. .fi .PP .br \fIB\fP .PP .nf B is COMPLEX 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\&. .fi .PP .br \fILDB\fP .PP .nf 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 )\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBFurther Details:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP .SS "subroutine dtrmm (character side, character uplo, character transa, character diag, integer m, integer n, double precision alpha, double precision, dimension(lda,*) a, integer lda, double precision, dimension(ldb,*) b, integer ldb)" .PP \fBDTRMM\fP .PP \fBPurpose:\fP .RS 4 .PP .nf DTRMM 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\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fISIDE\fP .PP .nf 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 )\&. .fi .PP .br \fIUPLO\fP .PP .nf 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\&. .fi .PP .br \fITRANSA\fP .PP .nf 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**T\&. .fi .PP .br \fIDIAG\fP .PP .nf 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\&. .fi .PP .br \fIM\fP .PP .nf M is INTEGER On entry, M specifies the number of rows of B\&. M must be at least zero\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER On entry, N specifies the number of columns of B\&. N must be at least zero\&. .fi .PP .br \fIALPHA\fP .PP .nf ALPHA is DOUBLE PRECISION\&. On entry, ALPHA specifies the scalar alpha\&. When alpha is zero then A is not referenced and B need not be set before entry\&. .fi .PP .br \fIA\fP .PP .nf A is DOUBLE PRECISION 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\&. .fi .PP .br \fILDA\fP .PP .nf 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 )\&. .fi .PP .br \fIB\fP .PP .nf B is DOUBLE PRECISION 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\&. .fi .PP .br \fILDB\fP .PP .nf 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 )\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBFurther Details:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP .SS "subroutine strmm (character side, character uplo, character transa, character diag, integer m, integer n, real alpha, real, dimension(lda,*) a, integer lda, real, dimension(ldb,*) b, integer ldb)" .PP \fBSTRMM\fP .PP \fBPurpose:\fP .RS 4 .PP .nf STRMM 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\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fISIDE\fP .PP .nf 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 )\&. .fi .PP .br \fIUPLO\fP .PP .nf 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\&. .fi .PP .br \fITRANSA\fP .PP .nf 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**T\&. .fi .PP .br \fIDIAG\fP .PP .nf 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\&. .fi .PP .br \fIM\fP .PP .nf M is INTEGER On entry, M specifies the number of rows of B\&. M must be at least zero\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER On entry, N specifies the number of columns of B\&. N must be at least zero\&. .fi .PP .br \fIALPHA\fP .PP .nf ALPHA is REAL On entry, ALPHA specifies the scalar alpha\&. When alpha is zero then A is not referenced and B need not be set before entry\&. .fi .PP .br \fIA\fP .PP .nf A is REAL 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\&. .fi .PP .br \fILDA\fP .PP .nf 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 )\&. .fi .PP .br \fIB\fP .PP .nf B is REAL 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\&. .fi .PP .br \fILDB\fP .PP .nf 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 )\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBFurther Details:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP .SS "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)" .PP \fBZTRMM\fP .PP \fBPurpose:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP \fBParameters\fP .RS 4 \fISIDE\fP .PP .nf 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 )\&. .fi .PP .br \fIUPLO\fP .PP .nf 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\&. .fi .PP .br \fITRANSA\fP .PP .nf 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\&. .fi .PP .br \fIDIAG\fP .PP .nf 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\&. .fi .PP .br \fIM\fP .PP .nf M is INTEGER On entry, M specifies the number of rows of B\&. M must be at least zero\&. .fi .PP .br \fIN\fP .PP .nf N is INTEGER On entry, N specifies the number of columns of B\&. N must be at least zero\&. .fi .PP .br \fIALPHA\fP .PP .nf 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\&. .fi .PP .br \fIA\fP .PP .nf 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\&. .fi .PP .br \fILDA\fP .PP .nf 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 )\&. .fi .PP .br \fIB\fP .PP .nf 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\&. .fi .PP .br \fILDB\fP .PP .nf 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 )\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBFurther Details:\fP .RS 4 .PP .nf 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\&. .fi .PP .RE .PP .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.