larre Interface

public interface larre

To find the desired eigenvalues of a given real symmetric tridiagonal matrix T, LARRE: sets any "small" off-diagonal elements to zero, and for each unreduced block T_i, it finds (a) a suitable shift at one end of the block's spectrum, (b) the base representation, T_i - sigma_i I = L_i D_i L_i^T, and (c) eigenvalues of each L_i D_i L_i^T. The representations and eigenvalues found are then used by DSTEMR to compute the eigenvectors of T. The accuracy varies depending on whether bisection is used to find a few eigenvalues or the dqds algorithm (subroutine DLASQ2) to conpute all and then discard any unwanted one. As an added benefit, LARRE also outputs the n Gerschgorin intervals for the matrices L_i D_i L_i^T.


Subroutines

public pure subroutine dlarre(range, n, vl, vu, il, iu, d, e, e2, rtol1, rtol2, spltol, nsplit, isplit, m, w, werr, wgap, iblock, indexw, gers, pivmin, work, iwork, info)

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: range
integer(kind=ilp), intent(in) :: n
real(kind=dp), intent(inout) :: vl
real(kind=dp), intent(inout) :: vu
integer(kind=ilp), intent(in) :: il
integer(kind=ilp), intent(in) :: iu
real(kind=dp), intent(inout) :: d(*)
real(kind=dp), intent(inout) :: e(*)
real(kind=dp), intent(inout) :: e2(*)
real(kind=dp), intent(in) :: rtol1
real(kind=dp), intent(in) :: rtol2
real(kind=dp), intent(in) :: spltol
integer(kind=ilp), intent(out) :: nsplit
integer(kind=ilp), intent(out) :: isplit(*)
integer(kind=ilp), intent(out) :: m
real(kind=dp), intent(out) :: w(*)
real(kind=dp), intent(out) :: werr(*)
real(kind=dp), intent(out) :: wgap(*)
integer(kind=ilp), intent(out) :: iblock(*)
integer(kind=ilp), intent(out) :: indexw(*)
real(kind=dp), intent(out) :: gers(*)
real(kind=dp), intent(out) :: pivmin
real(kind=dp), intent(out) :: work(*)
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(out) :: info

public pure subroutine slarre(range, n, vl, vu, il, iu, d, e, e2, rtol1, rtol2, spltol, nsplit, isplit, m, w, werr, wgap, iblock, indexw, gers, pivmin, work, iwork, info)

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: range
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(inout) :: vl
real(kind=sp), intent(inout) :: vu
integer(kind=ilp), intent(in) :: il
integer(kind=ilp), intent(in) :: iu
real(kind=sp), intent(inout) :: d(*)
real(kind=sp), intent(inout) :: e(*)
real(kind=sp), intent(inout) :: e2(*)
real(kind=sp), intent(in) :: rtol1
real(kind=sp), intent(in) :: rtol2
real(kind=sp), intent(in) :: spltol
integer(kind=ilp), intent(out) :: nsplit
integer(kind=ilp), intent(out) :: isplit(*)
integer(kind=ilp), intent(out) :: m
real(kind=sp), intent(out) :: w(*)
real(kind=sp), intent(out) :: werr(*)
real(kind=sp), intent(out) :: wgap(*)
integer(kind=ilp), intent(out) :: iblock(*)
integer(kind=ilp), intent(out) :: indexw(*)
real(kind=sp), intent(out) :: gers(*)
real(kind=sp), intent(out) :: pivmin
real(kind=sp), intent(out) :: work(*)
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(out) :: info

Module Procedures

public interface stdlib_dlarre()

Arguments

None

public interface stdlib_slarre()

Arguments

None