BLAS/SRC/zgerc.f(3)

πŸ’… BLAS/SRC/zgerc.f(3)

okay so this is a page from the Library Functions Manual β€” specifically it's BLAS/SRC/zgerc.f(3), and bestie, it's a whole vibe. It's a Fortran subroutine doc, auto-generated and everything. Let's get into it ✨


✨ NAME ✨

BLAS/SRC/zgerc.f β€” that's literally the name, that's the whole name, and honestly? Iconic for that. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine zgerc (m, n, alpha, x, incx, y, incy, a, lda) β€” this right here is the ZGERC subroutine, she's the main character of this whole page πŸ‘‘

πŸ’– Function/Subroutine Documentation πŸ’–

subroutine zgerc (integer m, integer n, complex*16 alpha, complex*16, dimension(*) x, integer incx, complex*16, dimension(*) y, integer incy, complex*16, dimension(lda,*) a, integer lda)

ZGERC πŸ’« β€” here's her full signature, copy it exactly bestie, don't you dare typo it.

🌸 Purpose:

!>
!> ZGERC  performs the rank 1 operation
!>
!>    A := alpha*x*y**H + A,
!>
!> where alpha is a scalar, x is an m element vector, y is an n element
!> vector and A is an m by n matrix.
!>

So basically: she does a rank 1 operation and updates A with alpha*x*y**H + A. Simple, clean, slays. Note that y**H is the conjugate transpose of y β€” that's the "c" in zgerc, iykyk 🧚

🌈 Parameters

  • M
!>          M is INTEGER
!>           On entry, M specifies the number of rows of the matrix A.
!>           M must be at least zero.
!>

The number of rows of A. It's an INTEGER, and it must be at least zero β€” no negatives, she said what she said πŸ™…β€β™€οΈ

  • N
!>          N is INTEGER
!>           On entry, N specifies the number of columns of the matrix A.
!>           N must be at least zero.
!>

The number of columns of A. Also an INTEGER, also must be at least zero. Symmetry, we love to see it πŸ’œ

  • ALPHA
!>          ALPHA is COMPLEX*16
!>           On entry, ALPHA specifies the scalar alpha.
!>

It's COMPLEX*16 and it's the scalar alpha. That's it, that's her whole job. Lowkey the easiest gig on this page 😭

  • X
!>          X is COMPLEX*16 array, dimension at least
!>           ( 1 + ( m - 1 )*abs( INCX ) ).
!>           Before entry, the incremented array X must contain the m
!>           element vector x.
!>

A COMPLEX*16 array, dimension at least ( 1 + ( m - 1 )*abs( INCX ) ). Before you call her, the incremented array X must contain the m element vector x. Note the abs( INCX ) β€” the incx can be negative and she still handles it, queen behavior 🫢

  • 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. INCX must not be zero β€” like, do not do that, it's giving undefined chaos πŸ’€

  • Y
!>          Y is COMPLEX*16 array, dimension at least
!>           ( 1 + ( n - 1 )*abs( INCY ) ).
!>           Before entry, the incremented array Y must contain the n
!>           element vector 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. Yes the bound uses INCY, not INCX β€” she's careful like that ✨

  • INCY
!>          INCY is INTEGER
!>           On entry, INCY specifies the increment for the elements of
!>           Y. INCY must not be zero.
!>

The increment for Y's elements. And yeah β€” INCY must not be zero either. Two for two on the "must not be zero" rule, periodt 🎯

  • 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. On exit, A is
!>           overwritten by the updated matrix.
!>

COMPLEX*16 array, dimension ( LDA, N ). Before entry, the leading m by n part of A must contain the matrix of coefficients. On exit, A is overwritten by the updated matrix β€” so heads up bestie, she's mutating your baby, not returning a cute new one πŸ™ˆ

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

The first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ) β€” that max( 1, m ) is doing real work for the m=0 case, we stan a defensive queen πŸ‘‘

πŸ‘‘ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Four institutions, one icon. The academic collab of the century fr fr πŸŽ“πŸ’…

πŸ”₯ Further Details:

!>
!>  Level 2 Blas routine.
!>
!>  -- 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.
!>

Level 2 BLAS routine β€” that's the classification, put some respect on it ⭐

And the origin story: 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). Literally older than most of the internet and still out here doing rank 1 updates 🌈

Definition at line 129 of file zgerc.f. If you're out here grepping for where she lives in the source, that's the spot πŸ“

🧚 Author

Generated automatically by Doxygen for LAPACK from the source code. Yeah, a robot wrote the docs, but the drip? handcrafted 😌


okay that's the whole page bestie, you're basically a BLAS girlie now πŸ’–

LAPACK ✿ Version 3.12.0 ✿ BLAS/SRC/zgerc.f(3) β€” mwah, that's the sign-off, go forth and conjugate your transposes πŸ«ΆπŸ’œ

πŸ“¦ where this page comes from