DLAED4(3)

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

🌸 NAME 🌸

ok so bestie, this page is from the Library Functions Manual, and the thing it's documenting is literally just this file:

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

that's it, that's the name section πŸ’… (yes, it's a path, the manpage generator was being extra)


✨ SYNOPSIS ✨

Functions/Subroutines πŸŽ€

  • subroutine DLAED4 (n, i, d, z, delta, rho, dlam, info) β€” this is the icon itself. DLAED4 is used by DSTEDC, and its whole brand is finding a single root of the secular equation πŸ¦‹

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

subroutine DLAED4 (integer n, integer i, double precision, dimension( * ) d,
    double precision, dimension( * ) z, double precision, dimension( * )
    delta, double precision rho, double precision dlam, integer info)

DLAED4 used by DSTEDC. Finds a single root of the secular equation. yup, that's the whole vibe ✨

🌈 Purpose:

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

!>
!> This subroutine computes the I-th updated eigenvalue of a symmetric
!> rank-one modification to a diagonal matrix whose elements are
!> given in the array d, and that
!>
!>            D(i) < D(j)  for  i < j
!>
!> and that RHO > 0.  This is arranged by the calling routine, and is
!> no loss in generality.  The rank-one modified system is thus
!>
!>            diag( D )  +  RHO * Z * Z_transpose.
!>
!> where we assume the Euclidean norm of Z is 1.
!>
!> The method consists of approximating the rational functions in the
!> secular equation by simpler interpolating rational functions.
!>

so basically: you hand it a diagonal matrix, someone yeets a rank-one update at it (RHO * Z * Z_transpose, no cap), and DLAED4 finds you the I-th updated eigenvalue. the trick? approximating those rational functions in the secular equation with simpler interpolating rational functions. it's giving "math but make it efficient" πŸ‘‘


🧚 Parameters

  • N β€” N is INTEGER. the length of all the arrays. every single one. it's the main character of lengths πŸ’œ
  • I β€” I is INTEGER. the index of the eigenvalue you're computing, and the range is strict: 1 <= I <= N. don't get cute with it πŸ™ˆ
  • D β€” D is DOUBLE PRECISION array, dimension (N). the original eigenvalues. the routine assumes they're already in order, meaning D(I) < D(J) for I < J. if you didn't sort them, that's on you bestie 😭
  • Z β€” Z is DOUBLE PRECISION array, dimension (N). the components of the updating vector. slay ✨
  • DELTA β€” DELTA is DOUBLE PRECISION array, dimension (N). okay this one has lore:
    • if N > 2, then DELTA contains (D(j) - lambda_I) in its j-th component
    • if N = 1, then DELTA(1) = 1
    • if N = 2, see DLAED5 for detail (not me, go read that one)
    • the vector DELTA holds the info you need to construct the eigenvectors with DLAED3 and DLAED9 🫢
  • RHO β€” RHO is DOUBLE PRECISION. the scalar in the symmetric updating formula. tiny but iconic πŸ’…
  • DLAM β€” DLAM is DOUBLE PRECISION. the computed lambda_I, aka the I-th updated eigenvalue. the whole point, honestly ⭐
  • INFO β€” INFO is INTEGER:
    • = 0: successful exit πŸŽ‰
    • > 0: if INFO = 1, the updating process failed πŸ’€
lowkey important: INFO = 1 means failure, not a vibe. check it, fr fr.

πŸ‘‘ Internal Parameters:

these are the internals, iykyk:

!>  Logical variable ORGATI (origin-at-i?) is used for distinguishing
!>  whether D(i) or D(i+1) is treated as the origin.
!>
!>            ORGATI = .true.    origin at i
!>            ORGATI = .false.   origin at i+1
!>
!>   Logical variable SWTCH3 (switch-for-3-poles?) is for noting
!>   if we are working with THREE poles!
!>
!>   MAXIT is the maximum number of iterations allowed for each
!>   eigenvalue.
!>

so ORGATI is the "origin-at-i?" flag deciding whether D(i) or D(i+1) is the origin. SWTCH3 is the "switch-for-3-poles?" flag and yes it's for noting if we're working with THREE poles (three!! poles!!). and MAXIT is the maximum number of iterations allowed for each eigenvalue 🌸


πŸ¦‹ Author

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

πŸ“ Contributors:

  • Ren-Cang Li, Computer Science Division, University of California at Berkeley, USA

πŸ”₯ Definition

Definition at line 144 of file dlaed4.f. periodt πŸ’…


πŸŽ€ Author (the meta one)

Generated automatically by Doxygen for LAPACK from the source code. so nobody hand-wrote this part, a robot did it for us πŸ™ˆ


and that's the whole page bestie!! πŸ’– this was LAPACK, Version 3.12.0, dated /home/abui...RC/dlaed4.f(3) β€” go forth and find those roots, you're gonna slay 🫢✨🌈

πŸ“¦ where this page comes from