DGEMV(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

DGEMV(3) πŸ’…βœ¨

okay so this page is from /home/abui...SRC/dgemv.f(3), straight out of the Library Functions Manual β€” and bestie, it is so much more fun than it looks, i promise 🫢


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/dgemv.f

like yes that's literally a whole path as the name, she's got main character energy and a very long address, we respect it πŸ’€


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine DGEMV (trans, m, n, alpha, a, lda, x, incx, beta, y, incy)

that's the short version β€” DGEMV, lowercase vibes only, arguments all lined up πŸŽ€


🌸 Function/Subroutine Documentation 🌸

subroutine DGEMV (character trans, integer m, integer n, double precision
    alpha, double precision, dimension(lda,*) a, integer lda, double
    precision, dimension(*) x, integer incx, double precision beta, double
    precision, dimension(*) y, integer incy)

DGEMV 🫢 (the full-length version, same girl, more detail)

Purpose

!> !> DGEMV performs one of the matrix-vector operations !> !> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, !> !> where alpha and beta are scalars, x and y are vectors and A is an !> m by n matrix. !>

so literally: you got a matrix A, you got vectors x and y, you got scalars alpha and beta, and DGEMV does the whole multiply-and-add situation for you. either the normal way or the transposed way, and honestly? iconic πŸ”₯


πŸŽ€ Parameters πŸŽ€

  • TRANS β€” TRANS is CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β†’ y := alpha*A*x + beta*y.
    • TRANS = 'T' or 't' β†’ y := alpha*A**T*x + beta*y.
    • TRANS = 'C' or 'c' β†’ y := alpha*A**T*x + beta*y.

ngl the 'T' and 'C' cases are doing the exact same thing here, that's just how she is πŸ’…

  • M β€” M is INTEGER. On entry, M specifies the number of rows of the matrix A. M must be at least zero. (zero is allowed, she just vibes and leaves early ✨)
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. that's the little multiplier bestie 🌸
  • A β€” A is DOUBLE PRECISION array, dimension ( LDA, N ). Before entry, the leading m by n part of the array A must contain the matrix of coefficients. πŸ‘‘
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ). don't skimp on it, fr fr 🫢
  • X β€” X is DOUBLE PRECISION array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. Before entry, the incremented array X must contain the vector x. mind the n vs m swap depending on TRANS, iykyk πŸ’€
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. seriously, not zero, that's a hard no πŸ™ˆ
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. cute little shortcut, love that for you ✨
  • Y β€” Y is DOUBLE PRECISION array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. Before entry with BETA non-zero, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y. If either m or n is zero, then Y not referenced and the function performs a quick return. okay so she literally does not touch Y in that case, she's out the door πŸƒβ€β™€οΈπŸ’¨
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. same rule as INCX, no zeros allowed periodt πŸ’…

πŸ‘‘ Author πŸ‘‘

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

the whole squad 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. !>

okay 1986!! she's been serving since before most of us were born, that's legacy behavior πŸ‘‘ and for real, if N = 0 or M = 0 the vector and matrix arguments are not referenced β€” she's not even looking at them πŸ’€

Definition at line 157 of file dgemv.f. πŸ“


⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. not a human, a little robot did this, and it ate πŸ€–βœ¨


btw quick vibe check: INCX and INCY must not be zero, LDA must be at least max( 1, m ), M and N must be at least zero, and Y gets overwritten on exit unless m or n is zero. no cap, those are the rules 🫢

alright bestie that's the whole page!! πŸŽ€ this was LAPACK, Version 3.12.0, and our girl lives at /home/abui...SRC/dgemv.f(3) β€” go forth and multiply those matrices, slay πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from