rocsolver_sstebz Interface Reference

rocsolver_sstebz Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_sstebz Interface Reference
hipfort_rocsolver::rocsolver_sstebz Interface Reference

The STEBZ functions compute a set of eigenvalues of a symmetric tridiagonal matrix T. More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_sstebz_ (handle, erange, eorder, n, vl, vu, il, iu, abstol, d, e, nev, nsplit, w, iblock, isplit, myinfo)
 

Detailed Description

The STEBZ functions compute a set of eigenvalues of a symmetric tridiagonal matrix T.

This function computes all the eigenvalues of T, all the eigenvalues in the half-open interval (vl, vu ], or the il-th through iu-th eigenvalues, depending on the value of erange.

The eigenvalues are returned in increasing order either for the entire matrix or grouped by independent diagonal blocks (if they exist), depending on the value of eorder.

Parameters
[in]handle- rocblas_handle.
[in]erange- rocblas_erange. Specifies the type of range or interval of the eigenvalues to be computed.
[in]eorder- rocblas_eorder. Specifies whether the computed eigenvalues will be ordered by their position in the entire spectrum or grouped by independent diagonal (split off) blocks.
[in]n- rocblas_int. n >= 0. The order of the tridiagonal matrix T.
[in]vl- real type. vl < vu. The lower bound of the search interval (vl, vu]. Ignored if erange indicates to look for all the eigenvalues of T or the eigenvalues within a set of indices.
[in]vu- real type. vl < vu. The upper bound of the search interval (vl, vu]. Ignored if erange indicates to look for all the eigenvalues of T or the eigenvalues within a set of indices.
[in]il- rocblas_int. il = 1 if n = 0, and 1 <= il <= iu otherwise. The index of the smallest eigenvalue to be computed. Ignored if erange indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
[in]iu- rocblas_int. iu = 0 if n = 0, and 1 <= il <= iu otherwise. The index of the largest eigenvalue to be computed. Ignored if erange indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
[in]abstol- real type. The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of the tridiagonal form of A will be used as the tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold. This is the tolerance that could get the most accurate results.
[in]D- pointer to real type. Array on the GPU of dimension n. The diagonal elements of the tridiagonal matrix.
[in]E- pointer to real type. Array on the GPU of dimension n-1. The off-diagonal elements of the tridiagonal matrix.
[out]nev- pointer to a rocblas_int on the GPU. The total number of eigenvalues found.
[out]nsplit- pointer to a rocblas_int on the GPU. The number of split off blocks in the matrix.
[out]W- pointer to real type. Array on the GPU of dimension n. The first nev elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations.)
[out]iblock- pointer to rocblas_int. Array on the GPU of dimension n. The block indices corresponding to each eigenvalue. When matrix T has split off blocks (nsplit > 1), then if iblock[i] = k, the eigenvalue W[i] belongs to the k-th diagonal block from the top.
[out]isplit- pointer to rocblas_int. Array on the GPU of dimension n. The splitting indices that divide the tridiagonal matrix into diagonal blocks. The k-th block stretches from the end of the (k-1)-th block (or the top left corner of the tridiagonal matrix, in the case of the 1st block) to the isplit[k]-th row/column.
[out]myInfo- pointer to a rocblas_int on the GPU. If info = 0, successful exit. If info = 1, the bisection did not converge for some eigenvalues, that is, the returned values are not as accurate as the given tolerance. The non-converged eigenvalues are flagged by negative entries in iblock.

Member Function/Subroutine Documentation

◆ rocsolver_sstebz_()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_sstebz::rocsolver_sstebz_ ( type(c_ptr), value  handle,
integer(kind(rocblas_erange_all)), value  erange,
integer(kind(rocblas_eorder_blocks)), value  eorder,
integer(c_int), value  n,
real(c_float), value  vl,
real(c_float), value  vu,
integer(c_int), value  il,
integer(c_int), value  iu,
real(c_float), value  abstol,
type(c_ptr), value  d,
type(c_ptr), value  e,
type(c_ptr), value  nev,
type(c_ptr), value  nsplit,
type(c_ptr), value  w,
type(c_ptr), value  iblock,
type(c_ptr), value  isplit,
type(c_ptr), value  myinfo 
)

The documentation for this interface was generated from the following file: