BLAS/SRC/ztrmm.f(3)

πŸ’– BLAS/SRC/ztrmm.f(3) πŸ’–

bestie you have officially stumbled into the LAPACK section of the manual, and today's main character is BLAS/SRC/ztrmm.f. no cap, it's giving "triangular matrix times matrix but make it complex". let's get into it πŸ’…


✨ NAME ✨

BLAS/SRC/ztrmm.f β€” that's the file, that's the vibe, that's the whole thing πŸ¦‹


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine ztrmm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb) β€” aka ZTRMM, the icon herself πŸ‘‘

πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine ztrmm

okay so here's the full signature, copy it exactly bestie, no typos allowed:

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 πŸ’œ

πŸ’« Purpose πŸ’«

so what does this queen actually do? she 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.

periodt. that's the whole job ✨

🧚 Parameters 🧚

  • SIDE β€” SIDE is CHARACTER*1

on entry, SIDE specifies whether op( A ) multiplies B from the left or right, like so:

  • SIDE = 'L' or 'l' β†’ B := alpha*op( A )*B.
  • SIDE = 'R' or 'r' β†’ B := alpha*B*op( A ).
  • UPLO β€” UPLO is CHARACTER*1

on entry, UPLO specifies whether the matrix A is an upper or lower triangular matrix, like so:

  • UPLO = 'U' or 'u' β†’ A is an upper triangular matrix.
  • UPLO = 'L' or 'l' β†’ A is a lower triangular matrix.
  • TRANSA β€” TRANSA is CHARACTER*1

on entry, TRANSA specifies the form of op( A ) to be used in the matrix multiplication, like so:

  • TRANSA = 'N' or 'n' β†’ op( A ) = A.
  • TRANSA = 'T' or 't' β†’ op( A ) = A**T.
  • TRANSA = 'C' or 'c' β†’ op( A ) = A**H.
  • DIAG β€” DIAG is CHARACTER*1

on entry, DIAG specifies whether or not A is unit triangular, like so:

  • DIAG = 'U' or 'u' β†’ A is assumed to be unit triangular.
  • DIAG = 'N' or 'n' β†’ A is not assumed to be unit triangular.
  • M β€” M is INTEGER

on entry, M specifies the number of rows of B. M must be at least zero.

  • N β€” N is INTEGER

on entry, N specifies the number of columns of B. N must be at least zero.

  • 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. lowkey a freebie, take it 😌

  • 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. iconic behaviour honestly πŸ’…

  • 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 ).

  • 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. bye bye original B 🫢

  • 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 ).


πŸ‘‘ Author πŸ‘‘

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

all of them. collectively. the whole squad 🫢


🌈 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.

literally legends, wrote it in 1989 and it's still eating today πŸ“


⭐ Definition ⭐

Definition at line 176 of file ztrmm.f.


πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for LAPACK from the source code. β€” so if the prose is a little dry, that's why bestie, a robot wrote it πŸ€–βœ¨


okay and that's a wrap, my love πŸ’– this page was brought to you by Version 3.12.0, dated Tue Nov 28 2023 12:08:41, living at BLAS/SRC/ztrmm.f(3). go forth and multiply your triangular matrices, no cap πŸŒΈπŸ’…πŸ«Ά