BLAS/SRC/zgemv.f(3)

✨ BLAS/SRC/zgemv.f ✨

okay bestie, welcome to the zgemv page from the LAPACK manual (yes, the BLAS/SRC/zgemv.f(3) one, we're being ✨specific✨). this is the glow-up guide to one little subroutine that does a whole lot of math and looks iconic doing it. let's go πŸ’…


πŸ¦‹ NAME πŸ¦‹

BLAS/SRC/zgemv.f

like, that's the whole name. short, sweet, slay.


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine zgemv (trans, m, n, alpha, a, lda, x, incx, beta, y, incy) β€” ZGEMV

πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine zgemv (character trans, integer m, integer n, complex*16 alpha, complex*16, dimension(lda,*) a, integer lda, complex*16, dimension(*) x, integer incx, complex*16 beta, complex*16, dimension(*) y, integer incy)

ZGEMV β€” say it with me, it's giving main character energy ✨

Purpose:

okay so here's the vibe. ZGEMV performs one of these matrix-vector operations, and you get to pick which one:

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

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

where alpha and beta are scalars, x and y are vectors, and A is an m by n matrix. that's it, that's the whole job. no cap 🫢

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**H*x + beta*y.
  • M

M is INTEGER. on entry, M specifies the number of rows of the matrix A. M must be at least zero. (zero is fine, we don't judge πŸ“)

  • 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 COMPLEX*16. on entry, ALPHA specifies the scalar alpha. the moment ✨

  • A

A is COMPLEX*16 array, dimension ( LDA, N ). before entry, the leading m by n part of the array A must contain the matrix of coefficients. she's the star of the show, obviously πŸ‘‘

  • 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 ).

  • X

X is COMPLEX*16 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.

  • INCX

INCX is INTEGER. on entry, INCX specifies the increment for the elements of X. INCX must not be zero. like, do NOT.

  • BETA

BETA is COMPLEX*16. on entry, BETA specifies the scalar beta. when BETA is supplied as zero then Y need not be set on input. convenient, we love her πŸ’–

  • Y

Y is COMPLEX*16 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. glow-up complete ✨ if either m or n is zero, then Y not referenced and the function performs a quick return. she said "not today" and left πŸ’…

  • INCY

INCY is 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.

(the whole friend group showed up 🫢)

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.
lowkey iconic that this has been holding it down since 1986. legends only. 🌈

Definition at line 159 of file zgemv.f.


πŸ’œ Author πŸ’œ

Generated automatically by Doxygen for LAPACK from the source code. (yes bestie, a robot wrote the docs, and she ate πŸ€–βœ¨)


and that's the whole page fr fr πŸ’… mwah. this was Version 3.12.0, dated Tue Nov 28 2023 12:08:41 β€” go forth and multiply your matrices, bestie, you're gonna slay πŸ’–πŸ¦‹πŸŒΈ