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: whenDIAG = 'U'or'u', the diagonal elements ofAare 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
- 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