SRC/claed8.f(3)

πŸ¦‹ SRC/claed8.f β€” like, the CLAED8 page but make it make sense

okay so bestie, this is a Library Functions Manual page for SRC/claed8.f, and it's literally the docs for one (1) Fortran subroutine that does a very specific little job. stay with me, it's not scary, it's giving "math but make it cute" πŸ’…


✨ NAME ✨

SRC/claed8.f β€” no cap, that's the whole name. it's a source file, and the file is the personality πŸŽ€


✨ SYNOPSIS ✨

Functions/Subroutines

subroutine claed8 (k, n, qsiz, q, ldq, d, rho, cutpnt, z, dlambda, q2,
    ldq2, w, indxp, indx, indxq, perm, givptr, givcol, givnum, info)

CLAED8 is used by CSTEDC. It merges eigenvalues and deflates the secular equation. Used when the original matrix is dense. that's the whole vibe, periodt πŸ”₯


✨ Function/Subroutine Documentation ✨

subroutine claed8 (integer k, integer n, integer qsiz, complex, dimension( ldq, * ) q, integer ldq, real, dimension( * ) d, real rho, integer cutpnt, real, dimension( * ) z, real, dimension( * ) dlambda, complex, dimension( ldq2, * ) q2, integer ldq2, real, dimension( * ) w, integer, dimension( * ) indxp, integer, dimension( * ) indx, integer, dimension( * ) indxq, integer, dimension( * ) perm, integer givptr, integer, dimension( 2, * ) givcol, real, dimension( 2, * ) givnum, integer info)

CLAED8 is used by CSTEDC. Merges eigenvalues and deflates the secular equation. Used when the original matrix is dense. (yes it says it twice, the source is just like that, we love consistency 🫢)

🌸 Purpose 🌸

!> !> CLAED8 merges the two sets of eigenvalues together into a single !> sorted set. Then it tries to deflate the size of the problem. !> There are two ways in which deflation can occur: when two or more !> eigenvalues are close together or if there is a tiny element in the !> Z vector. For each such occurrence the order of the related secular !> equation problem is reduced by one. !>

so basically: it takes the two eigenvalue sets, glues them into one sorted set (iconic), then tries to shrink the problem. deflation can happen two ways β€” either two or more eigenvalues are super close together, or there's a tiny little element in the Z vector. every time that happens, the order of the related secular equation problem goes down by one. ate πŸ’…


πŸŽ€ Parameters πŸŽ€

  • K β€” K is INTEGER. Contains the number of non-deflated eigenvalues. This is the order of the related secular equation. the main character count fr fr πŸ‘‘
  • N β€” N is INTEGER. The dimension of the symmetric tridiagonal matrix. N >= 0.
  • QSIZ β€” QSIZ is INTEGER. The dimension of the unitary matrix used to reduce the dense or band matrix to tridiagonal form. QSIZ >= N if ICOMPQ = 1.
  • Q β€” Q is COMPLEX array, dimension (LDQ,N). On entry, Q contains the eigenvectors of the partially solved system which has been previously updated in matrix multiplies with other partially solved eigensystems. On exit, Q contains the trailing (N-K) updated eigenvectors (those which were deflated) in its last N-K columns. glow-up on exit, we love to see it ✨
  • LDQ β€” LDQ is INTEGER. The leading dimension of the array Q. LDQ >= max( 1, N ).
  • D β€” D is REAL array, dimension (N). On entry, D contains the eigenvalues of the two submatrices to be combined. On exit, D contains the trailing (N-K) updated eigenvalues (those which were deflated) sorted into increasing order. sorted ascending, because chaos is not the vibe here πŸ¦‹
  • RHO β€” RHO is REAL. Contains the off diagonal element associated with the rank-1 cut which originally split the two submatrices which are now being recombined. RHO is modified during the computation to the value required by SLAED3. heads up: it gets changed mid-computation, that's on purpose, don't panic 😭
  • CUTPNT β€” CUTPNT is INTEGER. Contains the location of the last eigenvalue in the leading sub-matrix. MIN(1,N) <= CUTPNT <= N.
  • Z β€” Z is REAL array, dimension (N). On input this vector contains the updating vector (the last row of the first sub-eigenvector matrix and the first row of the second sub-eigenvector matrix). The contents of Z are destroyed during the updating process. bestie, it's gone, do not go looking for it after the call πŸ’€
  • DLAMBDA β€” DLAMBDA is REAL array, dimension (N). Contains a copy of the first K eigenvalues which will be used by SLAED3 to form the secular equation.
  • Q2 β€” Q2 is COMPLEX array, dimension (LDQ2,N). If ICOMPQ = 0, Q2 is not referenced. Otherwise, contains a copy of the first K eigenvectors which will be used by SLAED7 in a matrix multiply (SGEMM) to update the new eigenvectors. not referenced means not referenced, she's simply not invited to that party πŸ™ˆ
  • LDQ2 β€” LDQ2 is INTEGER. The leading dimension of the array Q2. LDQ2 >= max( 1, N ).
  • W β€” W is REAL array, dimension (N). This will hold the first k values of the final deflation-altered z-vector and will be passed to SLAED3. (lowercase k in the original, we respect the source's choices 🌸)
  • INDXP β€” INDXP is INTEGER array, dimension (N). This will contain the permutation used to place deflated values of D at the end of the array. On output INDXP(1:K) points to the nondeflated D-values and INDXP(K+1:N) points to the deflated eigenvalues. front half = the real ones, back half = the deflated ones πŸ‘‘
  • INDX β€” INDX is INTEGER array, dimension (N). This will contain the permutation used to sort the contents of D into ascending order.
  • INDXQ β€” INDXQ is INTEGER array, dimension (N). This contains the permutation which separately sorts the two sub-problems in D into ascending order. Note that elements in the second half of this permutation must first have CUTPNT added to their values in order to be accurate. lowkey the most important footnote on this whole page, do not skip it πŸ”₯
  • PERM β€” PERM is INTEGER array, dimension (N). Contains the permutations (from deflation and sorting) to be applied to each eigenblock.
  • GIVPTR β€” GIVPTR is INTEGER. Contains the number of Givens rotations which took place in this subproblem.
  • GIVCOL β€” GIVCOL is INTEGER array, dimension (2, N). Each pair of numbers indicates a pair of columns to take place in a Givens rotation. (that's exactly how the source words it, we're keeping it fr fr)
  • GIVNUM β€” GIVNUM is REAL array, dimension (2, N). Each number indicates the S value to be used in the corresponding Givens rotation.
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit. slay πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value. someone passed a bad argument, go fix it 😀

🌈 Author 🌈

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

Definition at line 225 of file claed8.f. (line 225, iconic line number, no notes ✨)


πŸ’œ Author πŸ’œ

Generated automatically by Doxygen for LAPACK from the source code. it's not a person, it's a robot with a dream πŸ€–πŸ’–


and that's the whole page bestie!! this came to you straight from LAPACK, Version 3.12.0, filed under SRC/claed8.f(3) β€” mwah, drink some water, and go deflate something πŸ’…πŸŽ€πŸ«Ά

πŸ“¦ where this page comes from