hpmv(3)

πŸ¦‹ hpmv(3)

okay so bestie, this is the manual page for hpmv β€” which is secretly a whole little family of BLAS routines, {hp,sp}mv, that do Hermitian/symmetric matrix-vector multiply. it's giving "level 2 BLAS royalty", it's giving "your linear algebra homework's main character". let's get into it πŸ’…


✨ NAME ✨

hpmv β€” {hp,sp}mv: Hermitian/symmetric matrix-vector multiply

✨ SYNOPSIS ✨

πŸŽ€ Functions

  • subroutine chpmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
    • CHPMV
  • subroutine dspmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
    • DSPMV
  • subroutine sspmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
    • SSPMV
  • subroutine zhpmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
    • ZHPMV
  • subroutine cspmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
    • CSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix
  • subroutine zspmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
    • ZSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix

✨ DETAILED DESCRIPTION ✨

this is where the real docs live β€” every function gets its own little spotlight below, no notes, no skips πŸ’–

✨ FUNCTION DOCUMENTATION ✨


πŸ’œ subroutine chpmv (character uplo, integer n, complex alpha, complex, dimension() ap, complex, dimension() x, integer incx, complex beta, complex, dimension(*) y, integer incy)

subroutine chpmv (character uplo, integer n, complex alpha, complex, dimension(*) ap, complex, dimension(*) x, integer incx, complex beta, complex, dimension(*) y, integer incy)

CHPMV β€” the Hermitian one. she's complex, she's packed, she's iconic.

🧚 Purpose

CHPMV performs the matrix-vector operation

y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix, supplied in packed form.

🧚 Parameters

  • UPLO β€” CHARACTER*1. On entry, UPLO tells us whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, like this:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is supplied in AP.
  • N β€” INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” COMPLEX. On entry, ALPHA specifies the scalar alpha.
  • AP β€” COMPLEX array, dimension at least ( ( n*( n + 1 ) )/2 ).
    • Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the hermitian 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 part of the hermitian 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 the imaginary parts of the diagonal elements need not be set and are assumed to be zero. so don't come for me if you left them blank, that's literally allowed 🫢
  • X β€” COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚨 like, genuinely not zero, zero is not the vibe.
  • BETA β€” COMPLEX. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. (a little treat, honestly ✨)
  • Y β€” COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y. πŸ’€ she gets replaced, that's her journey.
  • INCY β€” INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero.

🧚 Author

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

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

Definition at line 148 of file chpmv.f.


πŸ’œ subroutine cspmv (character uplo, integer n, complex alpha, complex, dimension( * ) ap, complex, dimension( * ) x, integer incx, complex beta, complex, dimension( * ) y, integer incy)

subroutine cspmv (character uplo, integer n, complex alpha, complex, dimension( * ) ap, complex, dimension( * ) x, integer incx, complex beta, complex, dimension( * ) y, integer incy)

CSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix. symmetric, not hermitian β€” yes there's a difference, yes it matters, iykyk 🌸

🧚 Purpose

CSPMV performs the matrix-vector operation

y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix, supplied in packed form.

🧚 Parameters

  • UPLO β€” CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is supplied in AP.
    • Unchanged on exit.
  • N β€” INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. Unchanged on exit.
  • ALPHA β€” COMPLEX. On entry, ALPHA specifies the scalar alpha. Unchanged on exit.
  • AP β€” COMPLEX array, dimension at least ( ( N*( N + 1 ) )/2 ).
    • Before entry, with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric 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 part of the symmetric 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.
    • Unchanged on exit.
  • X β€” COMPLEX array, dimension at least ( 1 + ( N - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the N-element vector x. Unchanged on exit.
  • INCX β€” INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Unchanged on exit. 🚨
  • BETA β€” COMPLEX. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. Unchanged on exit.
  • Y β€” COMPLEX array, dimension at least ( 1 + ( N - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y. πŸ™ˆ
  • INCY β€” INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Unchanged on exit.

🧚 Author

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

Definition at line 150 of file cspmv.f.


πŸ’œ subroutine dspmv (character uplo, integer n, double precision alpha, double precision, dimension() ap, double precision, dimension() x, integer incx, double precision beta, double precision, dimension(*) y, integer incy)

subroutine dspmv (character uplo, integer n, double precision alpha, double precision, dimension(*) ap, double precision, dimension(*) x, integer incx, double precision beta, double precision, dimension(*) y, integer incy)

DSPMV β€” double precision symmetric packed, the workhorse edition πŸ”₯

🧚 Purpose

DSPMV performs the matrix-vector operation

y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix, supplied in packed form.

🧚 Parameters

  • UPLO β€” CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is supplied in AP.
  • N β€” INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha.
  • AP 🌈 (and part 1 taps out right here, bestie β€” AP and everything after it picks up in part 2)
  • AP β€” DOUBLE PRECISION</p> array, dimension at least ( ( n*( n + 1 ) )/2 ). Okay so this is the packed matrix, and the vibes are very specific about how it goes in πŸ’…:

Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric 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 part of the symmetric 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.

  • X β€” DOUBLE PRECISION</p> array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. it's giving "the actual math input" ✨
  • INCX β€” INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero 🚫 (<- fr fr, do not do that)
  • BETA β€” DOUBLE PRECISION</p>. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input β€” lowkey the best shortcut in the whole routine 🫢
  • Y β€” DOUBLE PRECISION</p> array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y. she ate and then replaced herself πŸ’€
  • INCY β€” INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. same energy, different letter πŸŽ€

Author

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

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.

Definition at line 146 of file dspmv.f.


🌸 sspmv β€” the single-precision sister

subroutine sspmv (character uplo, integer n, real alpha, real, dimension(*)
    ap, real, dimension(*) x, integer incx, real beta, real, dimension(*) y,
    integer incy)

Purpose:

SSPMV performs the matrix-vector operation y := alpha*A*x + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix, supplied in packed form.

same iconic routine, just REAL flavoured instead of DOUBLE PRECISION πŸ“

Parameters

  • UPLO β€” CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β†’ The upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β†’ The lower triangular part of A is supplied in AP.
  • N β€” INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. πŸŒ€
  • ALPHA β€” REAL. On entry, ALPHA specifies the scalar alpha.
  • AP β€” REAL array, dimension at least ( ( n*( n + 1 ) )/2 ). Packing rules, round two ✨:

Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric 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 part of the symmetric 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.

  • X β€” REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. πŸ’€
  • BETA β€” REAL. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input 🫢
  • Y β€” REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y.
  • INCY β€” INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫

Author

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

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.

Definition at line 146 of file sspmv.f.


πŸ’œ zhpmv β€” hermitian, complex*16, absolutely iconic

subroutine zhpmv (character uplo, integer n, complex*16 alpha, complex*16,
    dimension(*) ap, complex*16, dimension(*) x, integer incx, complex*16
    beta, complex*16, dimension(*) y, integer incy)

Purpose:

ZHPMV performs the matrix-vector operation y := alpha*A*x + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix, supplied in packed form.

notice bestie: hermitian, not symmetric. that's the whole plot twist πŸ¦‹

Parameters

  • UPLO β€” CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β†’ The upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β†’ The lower triangular part of A is supplied in AP.
  • N β€” INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” COMPLEX*16. On entry, ALPHA specifies the scalar alpha.
  • AP β€” COMPLEX*16 array, dimension at least ( ( n*( n + 1 ) )/2 ).

Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the hermitian 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 part of the hermitian 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 the imaginary parts of the diagonal elements need not be set and are assumed to be zero. πŸ™ˆ lowkey free real estate, don't waste your keystrokes
  • X β€” COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
  • BETA β€” COMPLEX*16. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input.
  • Y β€” COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y.
  • INCY β€” INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. πŸ’…

Author

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

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.

Definition at line 148 of file zhpmv.f.


πŸŽ€ zspmv

subroutine zspmv (character uplo, integer n, complex*16 alpha, complex*16,
    dimension( * ) ap, complex*16, dimension( * ) x, integer incx,
    complex*16 beta, complex*16, dimension( * ) y, integer incy)

ZSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix. (yes bestie β€” symmetric, not hermitian. read that twice, the difference matters πŸ‘‘)

Purpose:

okay so back to the function tea: ZSPMV is out here performing the matrix-vector operation

y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix, supplied in packed form. iconic packed-storage behavior, no cap πŸ’–


Parameters πŸ’…

  • UPLO β€” CHARACTER*1. On entry, UPLO says whether the upper or lower triangular part of the matrix A is supplied in the packed array AP, like this:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is supplied in AP.

Unchanged on exit. ✨

  • N β€” INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. Unchanged on exit.
  • ALPHA β€” COMPLEX*16. On entry, ALPHA specifies the scalar alpha. Unchanged on exit.
  • AP β€” COMPLEX*16 array, dimension at least ( ( N*( N + 1 ) )/2 ).

Before entry, with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric 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 part of the symmetric 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.

Unchanged on exit. 🫢

  • X β€” COMPLEX*16 array, dimension at least ( 1 + ( N - 1 )*abs( INCX ) ).

Before entry, the incremented array X must contain the N-element vector x. Unchanged on exit.

  • INCX β€” INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Unchanged on exit.
  • BETA β€” COMPLEX*16. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. Unchanged on exit. πŸ’œ
  • Y β€” COMPLEX*16 array, dimension at least ( 1 + ( N - 1 )*abs( INCY ) ).

Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y.

  • INCY β€” INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Unchanged on exit.

Author πŸ‘‘

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

Definition at line 150 of file zspmv.f.

Author πŸ€–

Generated automatically by Doxygen for LAPACK from the source code.


that's the whole iconic manual page, bestie: LAPACK Version 3.12.0, hpmv(3), and the footer isn’t giving a date so I’m not making one up πŸ’…βœ¨

πŸ“¦ where this page comes from