CTPMV(3)
πΈ NAME πΈ
okay so bestie, this page is literally about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/ctpmv.f β that's the file, that's the whole name section, no notes π
It lives in the Library Functions Manual (ikr, fancy), and today's main character is CTPMV β¨
π SYNOPSIS π
Functions/Subroutines
subroutine CTPMV (uplo, trans, diag, n, ap, x, incx)
CTPMV
likeβ¦ that's it, that's the vibe check π«Ά
π Function/Subroutine Documentation π
subroutine CTPMV (character uplo, character trans, character diag, integer n, complex, dimension(*) ap, complex, dimension(*) x, integer incx)
CTPMV
π₯ Purpose:
highkey the whole point, so pay attention bestie:
!>
!> CTPMV performs one of the matrix-vector operations
!>
!> x := A*x, or x := A**T*x, or x := A**H*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 it's giving matrix-vector math but the matrix is squished into packed form π¦ n cap.
β¨ 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.
!>
'U'or'u'β A is an upper triangular matrix, queen goes on top π'L'or'l'β A is a lower triangular matrix, she's down there π
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**H*x.
!>
'N'or'n'β literally justx := A*x, no transposing, we're being simple today π'T'or't'βx := A**T*x, transposed era π'C'or'c'βx := A**H*x, conjugate-transposed, the fancy one π§
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.
!>
'U'or'u'β A is assumed to be unit triangular (the diagonal is all ones, trust π€)'N'or'n'β A is not assumed to be unit triangular, so like, actually use the diagonal values
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
the order of matrix A, bestie. must be at least zero β don't come at it with negatives β
AP
!> AP is COMPLEX 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.
!>
okay so this is the packed one, the whole aesthetic π dimension is at least ( ( n*( n + 1 ) )/2 ) fr fr.
- with
UPLO = 'U'or'u': upper triangular, packed sequentially column by column β soAP( 1 )holdsa( 1, 1 ), thenAP( 2 )andAP( 3 )holda( 1, 2 )anda( 2, 2 )respectively, and so on π - with
UPLO = 'L'or'l': lower triangular, packed sequentially column by column β soAP( 1 )holdsa( 1, 1 ), thenAP( 2 )andAP( 3 )holda( 2, 1 )anda( 3, 1 )respectively, and so on π
β οΈ heads up bestie: whenDIAG = 'U'or'u', the diagonal elements of A are not referenced β they're just assumed to be unity. so don't bother putting anything cute there, nobody's looking π
X
!> X is COMPLEX 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.
!>
dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). on entry, the incremented array X holds the n element vector x β and on exit, X gets overwritten with the transformed vector x. not me being destructive π she ate and left no crumbs.
INCX
!> INCX is INTEGER
!> On entry, INCX specifies the increment for the elements of
!> X. INCX must not be zero.
!>
the increment for the elements of X. must not be zero β that's a hard no, zero is not the vibe π
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad really showed up for this one πβ¨
π¦ 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, periodt π₯
- the vector and matrix arguments are not referenced when
N = 0, orM = 0(yes,M, that's literally what it says, iykyk π) - 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 icon behavior, they were doing this before it was cool π
Definition at line 141 of file ctpmv.f.
β Author
Generated automatically by Doxygen for LAPACK from the source code. so like, a robot wrote the docs, but the vibes are immaculate π§
and that's the whole page bestie!! this is LAPACK, Version 3.12.0, documented for /home/abui...SRC/ctpmv.f(3) β go forth and multiply (matrices) ππβ¨
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms