laebz Interface

public interface laebz

LAEBZ contains the iteration loops which compute and use the function N(w), which is the count of eigenvalues of a symmetric tridiagonal matrix T less than or equal to its argument w. It performs a choice of two types of loops: IJOB=1, followed by IJOB=2: It takes as input a list of intervals and returns a list of sufficiently small intervals whose union contains the same eigenvalues as the union of the original intervals. The input intervals are (AB(j,1),AB(j,2)], j=1,...,MINP. The output interval (AB(j,1),AB(j,2)] will contain eigenvalues NAB(j,1)+1,...,NAB(j,2), where 1 <= j <= MOUT. IJOB=3: It performs a binary search in each input interval (AB(j,1),AB(j,2)] for a point w(j) such that N(w(j))=NVAL(j), and uses C(j) as the starting point of the search. If such a w(j) is found, then on output AB(j,1)=AB(j,2)=w. If no such w(j) is found, then on output (AB(j,1),AB(j,2)] will be a small interval containing the point where N(w) jumps through NVAL(j), unless that point lies outside the initial interval. Note that the intervals are in all cases half-open intervals, i.e., of the form (a,b] , which includes b but not a . To avoid underflow, the matrix should be scaled so that its largest element is no greater than overflow(1/2) * underflow(1/4) in absolute value. To assure the most accurate computation of small eigenvalues, the matrix should be scaled to be not much smaller than that, either. See W. Kahan "Accurate Eigenvalues of a Symmetric Tridiagonal Matrix", Report CS41, Computer Science Dept., Stanford University, July 21, 1966 Note: the arguments are, in general, not checked for unreasonable values.


Subroutines

public pure subroutine dlaebz(ijob, nitmax, n, mmax, minp, nbmin, abstol, reltol, pivmin, d, e, e2, nval, ab, c, mout, nab, work, iwork, info)

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: ijob
integer(kind=ilp), intent(in) :: nitmax
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: mmax
integer(kind=ilp), intent(in) :: minp
integer(kind=ilp), intent(in) :: nbmin
real(kind=dp), intent(in) :: abstol
real(kind=dp), intent(in) :: reltol
real(kind=dp), intent(in) :: pivmin
real(kind=dp), intent(in) :: d(*)
real(kind=dp), intent(in) :: e(*)
real(kind=dp), intent(in) :: e2(*)
integer(kind=ilp), intent(inout) :: nval(*)
real(kind=dp), intent(inout) :: ab(mmax,*)
real(kind=dp), intent(inout) :: c(*)
integer(kind=ilp), intent(out) :: mout
integer(kind=ilp), intent(inout) :: nab(mmax,*)
real(kind=dp), intent(out) :: work(*)
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(out) :: info

public pure subroutine slaebz(ijob, nitmax, n, mmax, minp, nbmin, abstol, reltol, pivmin, d, e, e2, nval, ab, c, mout, nab, work, iwork, info)

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: ijob
integer(kind=ilp), intent(in) :: nitmax
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: mmax
integer(kind=ilp), intent(in) :: minp
integer(kind=ilp), intent(in) :: nbmin
real(kind=sp), intent(in) :: abstol
real(kind=sp), intent(in) :: reltol
real(kind=sp), intent(in) :: pivmin
real(kind=sp), intent(in) :: d(*)
real(kind=sp), intent(in) :: e(*)
real(kind=sp), intent(in) :: e2(*)
integer(kind=ilp), intent(inout) :: nval(*)
real(kind=sp), intent(inout) :: ab(mmax,*)
real(kind=sp), intent(inout) :: c(*)
integer(kind=ilp), intent(out) :: mout
integer(kind=ilp), intent(inout) :: nab(mmax,*)
real(kind=sp), intent(out) :: work(*)
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(out) :: info

Module Procedures

public interface stdlib_dlaebz()

Arguments

None

public interface stdlib_slaebz()

Arguments

None