double_blas_level3(3)

πŸ“¦
version 3.11.0 Β· 2 versions
, in debian bookworm

πŸ’– double_blas_level3 πŸ’–

okay bestie, so this page lives in section 3 of the manual (that's the library-calls girlies) and it's filed under LAPACK. It's literally the whole double-precision LEVEL 3 BLAS family in one place. Big page, big energy, so buckle up β€” this is part 1 of 3 πŸŽ€


✨ NAME ✨

double_blas_level3 β€” double

like. that's the whole name section. the original just says double. we love a minimalist queen πŸ’…


🌸 SYNOPSIS 🌸

🫢 Functions

subroutine dgemm (TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA,
    C, LDC)
    DGEMM
subroutine dsymm (SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
    DSYMM
subroutine dsyr2k (UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C,
    LDC)
    DSYR2K
subroutine dsyrk (UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
    DSYRK
subroutine dtrmm (SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
    DTRMM
subroutine dtrsm (SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
    DTRSM

πŸ’œ Detailed Description πŸ’œ

This is the group of double LEVEL 3 BLAS routines. that's it, that's the vibe check. it's a squad, not a single function πŸ‘‘


πŸ”₯ Function Documentation πŸ”₯

🌈 subroutine dgemm 🌈

subroutine dgemm (character TRANSA, character TRANSB, integer M, integer N,
    integer K, double precision ALPHA, double precision, dimension(lda,*) A,
    integer LDA, double precision, dimension(ldb,*) B, integer LDB, double
    precision BETA, double precision, dimension(ldc,*) C, integer LDC)

DGEMM

⭐ Purpose:

okay so DGEMM 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,

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. no cap, that's the whole thing 🧚

πŸŽ€ Parameters

  • 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**T.
  • TRANSB β€” TRANSB is 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**T.
  • M β€” M is 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 β€” N is 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 β€” K is 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 β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is DOUBLE PRECISION 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 β€” LDA is 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 least max( 1, m ), otherwise LDA must be at least max( 1, k ).
  • B β€” B is DOUBLE PRECISION 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 β€” LDB is 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 least max( 1, k ), otherwise LDB must be at least max( 1, n ).
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. (free real estate, bestie ✨)
  • C β€” C is DOUBLE PRECISION 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 β€” LDC is INTEGER. On entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 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 dsymm πŸ¦‹

subroutine dsymm (character SIDE, character UPLO, integer M, integer N,
    double precision ALPHA, double precision, dimension(lda,*) A, integer
    LDA, double precision, dimension(ldb,*) B, integer LDB, double precision
    BETA, double precision, dimension(ldc,*) C, integer LDC)

DSYMM

⭐ Purpose:

DSYMM 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 a symmetric matrix and B and C are m by n matrices. symmetric queen behavior πŸ’…

πŸŽ€ Parameters

  • SIDE β€” SIDE is CHARACTER*1. On entry, SIDE specifies whether the symmetric 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 β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the symmetric matrix A is to be referenced as follows:
    • 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 β€” M is INTEGER. On entry, M specifies the number of rows of the matrix C. M must be at least zero.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix C. N must be at least zero.
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is DOUBLE PRECISION 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 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 β€” 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 ), otherwise LDA must be at least max( 1, n ).
  • B β€” 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.
  • 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 ).
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. (again!! zero beta = no input needed, we stan a low-effort entry condition 🫢)
  • C β€” C is DOUBLE PRECISION 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 is INTEGER. On entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 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 dsyr2k

subroutine dsyr2k (character UPLO, character TRANS, integer N, integer K,
    double precision ALPHA, double precision, dimension(lda,*) A, integer
    LDA, double precision, dimension(ldb,*) B, integer LDB, double precision
    BETA, double precision, dimension(ldc,*) C, integer LDC)

DSYR2K β€” bestie, this is the one that does the whole symmetric rank 2k glow-up ✨

Purpose:

Okay so DSYR2K performs one of the symmetric rank 2k operations, and you get to pick which one πŸ‘‘

   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 matrices doing a little duet, one symmetric result. Cute. πŸ’…

Parameters

  • UPLO β€” it's CHARACTER*1 and honestly it's just here to ask which half of C are we even looking at? 🫢

On entry, UPLO specifies whether the upper or lower triangular part of the array C is to be referenced as follows:

  • 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 β€” also CHARACTER*1, and this one decides which of the two operations from up top actually happens 🌸

On entry, TRANS specifies the operation to be performed as follows:

  • 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.
  • TRANS = 'C' or 'c' β€” C := alpha*A**T*B + alpha*B**T*A + beta*C.
  • N β€” an INTEGER, and it's giving order of the matrix. On entry, N specifies the order of the matrix C. N must be at least zero. No negative eras allowed πŸ’€
  • K β€” an INTEGER, and its job description changes depending on TRANS (iconic, honestly). On entry with TRANS = 'N' or 'n', K specifies the number of columns of the matrices A and B, and on entry with TRANS = 'T' or 't' or 'C' or 'c', K specifies the number of rows of the matrices A and B. K must be at least zero.
  • ALPHA β€” it's DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. Yes bestie, it's just alpha. That's the whole thing. πŸŽ€
  • A β€” a DOUBLE PRECISION array, dimension ( LDA, ka ), where ka is k when TRANS = 'N' or 'n', and is n otherwise.

Before entry with TRANS = 'N' or 'n', the leading n by k part of the array A must contain the matrix A, otherwise the leading k by n part of the array A must contain the matrix A. Context-dependent queen ✨

  • LDA β€” an INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When TRANS = 'N' or 'n' then LDA must be at least max( 1, n ), otherwise LDA must be at least max( 1, k ).
  • B β€” a DOUBLE PRECISION array, dimension ( LDB, kb ), where kb is k when TRANS = 'N' or 'n', and is n otherwise.

Before entry with TRANS = 'N' or 'n', the leading n by k part of the array B must contain the matrix B, otherwise the leading k by n part of the array B must contain the matrix B. Same energy as A, but make it B πŸ’–

  • LDB β€” an INTEGER. On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. When TRANS = 'N' or 'n' then LDB must be at least max( 1, n ), otherwise LDB must be at least max( 1, k ).
  • BETA β€” DOUBLE PRECISION. On entry, BETA specifies the scalar beta. The other scalar. The second half of the duo. 🌈
  • C β€” a DOUBLE PRECISION array, 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.

Not referenced means NOT REFERENCED, bestie. Don't go reading that half, it's not part of the conversation πŸ™ˆ
  • LDC β€” an INTEGER. On entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 1, n ).

Author

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

Further Details:

Level 3 Blas routine. Yes ma'am, certified Level 3 πŸ‘‘

  -- 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 dsyrk

subroutine dsyrk (character UPLO, character TRANS, integer N, integer K,
    double precision ALPHA, double precision, dimension(lda,*) A, integer
    LDA, double precision BETA, double precision, dimension(ldc,*) C,
    integer LDC)

DSYRK β€” the solo version of the one above. One matrix, one rank k, zero drama πŸ¦‹

Purpose:

DSYRK performs one of the symmetric rank k operations:

   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. One girl, two possible lewks πŸ’…

Parameters

  • UPLO β€” CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the array C is to be referenced as follows:
    • 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 β€” CHARACTER*1. On entry, TRANS specifies 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.
    • TRANS = 'C' or 'c' β€” C := alpha*A**T*A + beta*C.
Real talk: 'T' and 'C' land you in the exact same place here πŸ”₯
  • N β€” an INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero.
  • K β€” an INTEGER, and again its whole personality depends on TRANS. On entry with TRANS = 'N' or 'n', K specifies the number of columns of the matrix A, and on entry with TRANS = 'T' or 't' or 'C' or 'c', K specifies the number of rows of the matrix A. K must be at least zero.
  • ALPHA β€” DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. Just alpha. Living its truth πŸŽ€
  • A β€” a DOUBLE PRECISION array, dimension ( LDA, ka ), where ka is k when TRANS = 'N' or 'n', and is n otherwise.

Before entry with TRANS = 'N' or 'n', the leading n by k part of the array A must contain the matrix A, otherwise the leading k by n part of the array A must contain the matrix A.

  • LDA β€” an INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When TRANS = 'N' or 'n' then LDA must be at least max( 1, n ), otherwise LDA must be at least max( 1, k ).
  • BETA β€” DOUBLE PRECISION. On entry, BETA specifies the scalar beta.
  • C β€” a DOUBLE PRECISION array, 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.

Half of C is off-limits depending on UPLO. Respect the boundary, bestie 🫢
  • LDC β€” an INTEGER. On entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 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.

subroutine dtrmm

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)

DTRMM β€” triangular matrix Γ— matrix, and it goes both ways 🌈

Purpose:

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


okay so we're mid-dtrmm right now and the very last crumb of its Purpose equation is op( A ) = A or op( A ) = A**T. β€” got it? good. now the parameters, bestie, and there are eleven of them so hydrate first πŸ’§

✨ Parameters ✨

  • SIDE β€” SIDE is CHARACTER*1. on entry, SIDE tells you whether op( A ) multiplies B from the left or the right, like this:
    • 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 spills whether A is upper or lower triangular:
    • 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 says which form of op( A ) gets used in the matrix multiplication:
    • TRANSA = 'N' or 'n' β†’ op( A ) = A.
    • TRANSA = 'T' or 't' β†’ op( A ) = A**T.
    • TRANSA = 'C' or 'c' β†’ op( A ) = A**T.
  • DIAG β€” DIAG is CHARACTER*1. on entry, DIAG says whether A is unit triangular or not:
    • 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 is the number of rows of B. M must be at least zero. periodt.
  • N β€” N is INTEGER. on entry, N is the number of columns of B. N must be at least zero.
  • ALPHA β€” ALPHA is DOUBLE PRECISION. on entry, ALPHA is the scalar alpha. and here's the slay: when alpha is zero then A is not referenced and B need not be set before entry. free real estate πŸŽ€
  • A β€” 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. 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 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. it's giving glow-up ✨
  • 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.

πŸ’Œ 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 dtrsm πŸŽ€

subroutine dtrsm (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)

Purpose:

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

The matrix X is overwritten on B. πŸ’…

Parameters

  • SIDE β€” SIDE is CHARACTER*1. on entry, SIDE specifies whether op( A ) appears on the left or right of X as follows:
    • SIDE = 'L' or 'l' β†’ op( A )*X = alpha*B.
    • SIDE = 'R' or 'r' β†’ X*op( A ) = alpha*B.
  • 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.
  • 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**T.
  • 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.
  • 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 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.
  • A β€” A is DOUBLE PRECISION array, dimension ( LDA, k ),
    • where k is m when SIDE = 'L' or 'l' and k 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.
  • 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 DOUBLE PRECISION array, dimension ( LDB, N ). before entry, the leading m by n part of the array B must contain the right-hand side matrix B, and on exit is overwritten by the solution matrix X. the transformation arc πŸ¦‹
  • 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.

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. (not a human, just vibes πŸ€–πŸ’–)


and that's the whole page bestie!! you read all of double_blas_level3(3) and honestly? ate. this little legend came from Version 3.11.0, dated Sun Nov 27 2022, and the man page name is literally double_blas_level3(3) β€” go forth and multiply your triangular matrices, mwah πŸ’…πŸ’–βœ¨

πŸ“¦ where this page comes from