ZLASCL(3)

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

πŸ¦‹ ZLASCL β€” the "scale my matrix without blowing up my floats" queen

ok so bestie, real talk: this page is from the LAPACK crew, and it lives at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zlascl.f β€” that's the file name in the header and the NAME section, iykyk. She's part of the Library Functions Manual, and she's here to make your matrix ✨prettier✨ by a scalar. Slay.


✨ SYNOPSIS ✨

Functions/Subroutines

subroutine ZLASCL (type, kl, ku, cfrom, cto, m, n, a, lda, info)

ZLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom. That's the whole vibe.


πŸ’… Function/Subroutine Documentation πŸ’…

subroutine ZLASCL (character type, integer kl, integer ku, double precision
    cfrom, double precision cto, integer m, integer n, complex*16,
    dimension( lda, * ) a, integer lda, integer info)

Again, for the people in the back: ZLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.

🎯 Purpose

ok so here's the tea, straight from the source comments:

!>
!> ZLASCL multiplies the M by N complex matrix A by the real scalar
!> CTO/CFROM.  This is done without over/underflow as long as the final
!> result CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that
!> A may be full, upper triangular, lower triangular, upper Hessenberg,
!> or banded.
!>

So she takes your matrix A and multiplies it by CTO/CFROM, and the whole point β€” the main character energy of this routine β€” is that she does it without over/underflow, as long as the final result CTO*A(I,J)/CFROM itself doesn't over/underflow. And TYPE tells her what kind of storage your A is rocking: full, upper triangular, lower triangular, upper Hessenberg, or banded. Versatile icon πŸ’…

🌸 Parameters 🌸

  • TYPE β€” she's a CHARACTER*1, and she indices the storage type of the input matrix. The lore:
!>          TYPE is CHARACTER*1
!>          TYPE indices the storage type of the input matrix.
!>          = 'G':  A is a full matrix.
!>          = 'L':  A is a lower triangular matrix.
!>          = 'U':  A is an upper triangular matrix.
!>          = 'H':  A is an upper Hessenberg matrix.
!>          = 'B':  A is a symmetric band matrix with lower bandwidth KL
!>                  and upper bandwidth KU and with the only the lower
!>                  half stored.
!>          = 'Q':  A is a symmetric band matrix with lower bandwidth KL
!>                  and upper bandwidth KU and with the only the upper
!>                  half stored.
!>          = 'Z':  A is a band matrix with lower bandwidth KL and upper
!>                  bandwidth KU. See ZGBTRF for storage details.
!>

(yes, the original really says "with the only the lower half stored" and "with the only the upper half stored" β€” we keep the words exactly, no cap πŸ™ˆ)

  • KL β€” an INTEGER. The lower bandwidth of A. Only referenced if TYPE = 'B', 'Q' or 'Z' β€” otherwise she's just standing there, gorgeous, unused.
  • KU β€” an INTEGER. The upper bandwidth of A. Same deal: only referenced if TYPE = 'B', 'Q' or 'Z'.
  • CFROM β€” a DOUBLE PRECISION. That's it, that's the description. (The real deets live under CTO below, bestie, keep reading 🫢)
  • CTO β€” a DOUBLE PRECISION. The matrix A is multiplied by CTO/CFROM. A(I,J) is computed without over/underflow if the final result CTO*A(I,J)/CFROM can be represented without over/underflow. CFROM must be nonzero. Like, non-negotiable. Zero is not the vibe.
  • M β€” an INTEGER. The number of rows of the matrix A. Constraint: M >= 0.
  • N β€” an INTEGER. The number of columns of the matrix A. Constraint: N >= 0.
  • A β€” a COMPLEX*16 array, dimension (LDA,N). The matrix to be multiplied by CTO/CFROM. See TYPE for the storage type β€” she needs to know how you're storing it, bestie.
  • LDA β€” an INTEGER. The leading dimension of the array A. Depends on TYPE, so pay attention:
!>          If TYPE = 'G', 'L', 'U', 'H', LDA >= max(1,M);
!>             TYPE = 'B', LDA >= KL+1;
!>             TYPE = 'Q', LDA >= KU+1;
!>             TYPE = 'Z', LDA >= 2*KL+KU+1.
  • INFO β€” an INTEGER. The vibes report:
!>          0  - successful exit
!>          <0 - if INFO = -i, the i-th argument had an illegal value.

πŸ‘‘ Author

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

Definition at line 142 of file zlascl.f.


⭐ Author (the meta one)

Generated automatically by Doxygen for LAPACK from the source code. Not a human, just a robot doing robot things πŸ€–βœ¨


so yeah, that's the whole page, bestie. go forth and scale responsibly πŸ’–

sign-off szn: this lore drop is from LAPACK, Version 3.12.0, and the page itself is /home/abui...RC/zlascl.f(3). mwah, study hard, hydrate, and may your CFROM never be zero πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from