larrd Interface

public interface larrd

LARRD computes the eigenvalues of a symmetric tridiagonal matrix T to suitable accuracy. This is an auxiliary code to be called from DSTEMR. The user may ask for all eigenvalues, all eigenvalues in the half-open interval (VL, VU], or the IL-th through IU-th eigenvalues. To avoid overflow, the matrix must be scaled so that its largest element is no greater than overflow(1/2) * underflow(1/4) in absolute value, and for greatest accuracy, it should not be much smaller than that. See W. Kahan "Accurate Eigenvalues of a Symmetric Tridiagonal Matrix", Report CS41, Computer Science Dept., Stanford University, July 21, 1966.


Subroutines

public pure subroutine dlarrd(range, order, n, vl, vu, il, iu, gers, reltol, d, e, e2, pivmin, nsplit, isplit, m, w, werr, wl, wu, iblock, indexw, work, iwork, info)

Arguments

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

public pure subroutine slarrd(range, order, n, vl, vu, il, iu, gers, reltol, d, e, e2, pivmin, nsplit, isplit, m, w, werr, wl, wu, iblock, indexw, work, iwork, info)

Arguments

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

Module Procedures

public interface stdlib_dlarrd()

Arguments

None

public interface stdlib_slarrd()

Arguments

None