DLAED4(3)
πΈ 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.DLAED4is used byDSTEDC, 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, meaningD(I) < D(J)forI < 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, thenDELTAcontains(D(j) - lambda_I)in its j-th component - if
N = 1, thenDELTA(1) = 1 - if
N = 2, seeDLAED5for detail (not me, go read that one) - the vector
DELTAholds the info you need to construct the eigenvectors withDLAED3andDLAED9π«Ά
- if
RHOβRHO is DOUBLE PRECISION. the scalar in the symmetric updating formula. tiny but iconic πDLAMβDLAM is DOUBLE PRECISION. the computedlambda_I, aka the I-th updated eigenvalue. the whole point, honestly βINFOβINFO is INTEGER:= 0: successful exit π> 0: ifINFO = 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
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms