BLAS/SRC/dtpmv.f(3)

🌸 BLAS/SRC/dtpmv.f(3) 🌸

Okay bestie, welcome to the <cyan>Library Functions Manual</cyan> β€” this is the dtpmv page and it is literally about doing triangular matrix-vector math with packed storage. Lock in 🫢


✨ NAME ✨

BLAS/SRC/dtpmv.f β€” the file, the legend, the whole vibe πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine dtpmv (uplo, trans, diag, n, ap, x, incx)

DTPMV β€” yes that's the name, and yes it slays ✨


πŸ’– Function/Subroutine Documentation πŸ’–

subroutine dtpmv (character uplo, character trans, character diag, integer n, double precision, dimension(*) ap, double precision, dimension(*) x, integer incx)

DTPMV β€” main character energy, no cap πŸ‘‘

πŸŽ€ Purpose:

!>
!> DTPMV  performs one of the matrix-vector operations
!>
!>    x := A*x,   or   x := A**T*x,
!>
!> where x is an n element vector and  A is an n by n unit, or non-unit,
!> upper or lower triangular matrix, supplied in packed form.
!>

So like, you hand it a packed triangular matrix A and a vector x, and it gives you back A*x or A**T*x. Iconic behaviour honestly 🌈


πŸ’… Parameters πŸ’…

UPLO

!>          UPLO is CHARACTER*1
!>           On entry, UPLO specifies whether the matrix 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.
!>

On entry this tells it whether A is <mint>upper triangular</mint> ('U' or 'u') or <mint>lower triangular</mint> ('L' or 'l'), periodt πŸ’β€β™€οΈ

TRANS

!>          TRANS is CHARACTER*1
!>           On entry, TRANS specifies the operation to be performed as
!>           follows:
!>
!>              TRANS = 'N' or 'n'   x := A*x.
!>
!>              TRANS = 'T' or 't'   x := A**T*x.
!>
!>              TRANS = 'C' or 'c'   x := A**T*x.
!>

On entry this picks which op you're running: <purple>'N' / 'n' gives you x := A*x, while <purple>'T' / 't' and <purple>'C' / 'c' both give you x := A**T*x πŸ’«

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

On entry this says whether A is unit triangular: <yellow>'U' / 'u' means yep, assume it's unit triangular; <yellow>'N' / 'n' means nope, it is not assumed to be unit triangular 🧚

N

!>          N is INTEGER
!>           On entry, N specifies the order of the matrix A.
!>           N must be at least zero.
!>

INTEGER, on entry, the order of matrix A. And listen β€” N must be at least zero. Negative? Not today bestie 😭

AP

!>          AP is DOUBLE PRECISION array, dimension at least
!>           ( ( n*( n + 1 ) )/2 ).
!>           Before entry with  UPLO = 'U' or 'u', the array AP must
!>           contain the upper triangular matrix packed sequentially,
!>           column by column, so that AP( 1 ) contains a( 1, 1 ),
!>           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
!>           respectively, and so on.
!>           Before entry with UPLO = 'L' or 'l', the array AP must
!>           contain the lower triangular matrix packed sequentially,
!>           column by column, so that AP( 1 ) contains a( 1, 1 ),
!>           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
!>           respectively, and so on.
!>           Note that when  DIAG = 'U' or 'u', the diagonal elements of
!>           A are not referenced, but are assumed to be unity.
!>

DOUBLE PRECISION array, dimension at least ( ( n*( n + 1 ) )/2 ) πŸ’–

Before entry with UPLO = 'U' or 'u', AP holds the upper triangular matrix packed sequentially, column by column: AP( 1 ) contains a( 1, 1 ), and AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on.

Before entry with UPLO = 'L' or 'l', AP holds the lower triangular matrix packed sequentially, column by column: AP( 1 ) contains a( 1, 1 ), and AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on.

Heads up fr fr: when DIAG = 'U' or 'u', the diagonal elements of A are not referenced β€” they're just assumed to be unity 🌟

X

!>          X is DOUBLE PRECISION array, dimension at least
!>           ( 1 + ( n - 1 )*abs( INCX ) ).
!>           Before entry, the incremented array X must contain the n
!>           element vector x. On exit, X is overwritten with the
!>           transformed vector x.
!>

DOUBLE PRECISION array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. On exit, X gets overwritten with the transformed vector x πŸ¦‹

INCX

!>          INCX is INTEGER
!>           On entry, INCX specifies the increment for the elements of
!>           X. INCX must not be zero.
!>

INTEGER, on entry it's the increment for the elements of X. And <red>INCX must not be zero</red> β€” that's a hard no, don't do it πŸ’€


πŸ‘‘ Author πŸ‘‘

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

The whole squad contributed, we stan 🫢


⭐ Further Details: ⭐

!>
!>  Level 2 Blas routine.
!>  The vector and matrix arguments are not referenced when N = 0, or M = 0
!>
!>  -- Written on 22-October-1986.
!>     Jack Dongarra, Argonne National Lab.
!>     Jeremy Du Croz, Nag Central Office.
!>     Sven Hammarling, Nag Central Office.
!>     Richard Hanson, Sandia National Labs.
!>

It's a Level 2 BLAS routine ✨ And note: the vector and matrix arguments are not referenced when N = 0, or M = 0.

Written on 22-October-1986 by Jack Dongarra (Argonne National Lab), Jeremy Du Croz (Nag Central Office), Sven Hammarling (Nag Central Office), and Richard Hanson (Sandia National Labs). Vintage icons, honestly 🌸


Definition at line 141 of file dtpmv.f.


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. (Not me, a bot did it 😭)


LAPACK β€” Version 3.12.0 β€” BLAS/SRC/dtpmv.f(3)

That's the whole page bestie, go forth and multiply your matrices πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from