rocsolver_chegvx Interface Reference

rocsolver_chegvx Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_chegvx Interface Reference
hipfort_rocsolver::rocsolver_chegvx Interface Reference

The HEGVX functions compute a set of the eigenvalues and optionally the corresponding eigenvectors of a complex generalized Hermitian-definite eigenproblem. More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_chegvx_ (handle, itype, evect, erange, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol, nev, w, z, ldz, ifail, myinfo)
 

Detailed Description

The HEGVX functions compute a set of the eigenvalues and optionally the corresponding eigenvectors of a complex generalized Hermitian-definite eigenproblem.

The problem solved by this function is either of the form

\[ \begin{array}{cl} A X = \lambda B X & \: \text{1st form,}\\% A B X = \lambda X & \: \text{2nd form, or}\\% B A X = \lambda X & \: \text{3rd form,} \end{array} \]

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

\[ \begin{array}{cl} Z^H B Z=I & \: \text{if 1st or 2nd form, or}\\% Z^H B^{-1} Z=I & \: \text{if 3rd form.} \end{array} \]

This function computes all the eigenvalues, all the eigenvalues in the half-open interval \((vl, vu]\), or the il -th through iu -th eigenvalues, depending on the value of erange. If evect is rocblas_evect_original, the eigenvectors for these eigenvalues will be computed as well.

Parameters
[in]handle- rocblas_handle.
[in]itype- rocblas_eform. Specifies the form of the generalized eigenproblem.
[in]evect- rocblas_evect. Specifies whether the eigenvectors are to be computed. If evect is rocblas_evect_original, then the eigenvectors are computed. rocblas_evect_tridiagonal is not supported.
[in]erange- rocblas_erange. Specifies the type of range or interval of the eigenvalues to be computed.
[in]uplo- rocblas_fill. Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
[in]n- rocblas_int. n >= 0. The matrix dimensions.
[in,out]A- pointer to type. Array on the GPU of dimension lda*n. On entry, the matrix A. On exit, the contents of A are destroyed.
[in]lda- rocblas_int. lda >= n. Specifies the leading dimension of matrix A.
[out]B- pointer to type. Array on the GPU of dimension ldb*n. On entry, the Hermitian positive definite matrix B. On exit, the triangular factor of B, as returned by POTRF.
[in]ldb- rocblas_int. ldb >= n. Specifies the leading dimension of B.
[in]vl- real type. vl < vu. The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A 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 range indicates to look for all the eigenvalues of A 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 range indicates to look for all the eigenvalues of A 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 range indicates to look for all the eigenvalues of A 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.
[out]nev- pointer to a rocblas_int on the GPU. The total number of eigenvalues found. If erange is rocblas_erange_all, nev = n. If erange is rocblas_erange_index, nev = iu - il + 1. Otherwise, 0 <= nev <= n.
[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]Z- pointer to type. Array on the GPU of dimension ldz*nev. On exit, if evect is not rocblas_evect_none and info = 0, the first nev columns contain the eigenvectors of A corresponding to the output eigenvalues. Not referenced if evect is rocblas_evect_none.
  • Note: If erange is rocblas_range_value, then the values of nev are not known in advance. The user should ensure that Z is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
[in]ldz- rocblas_int. ldz >= n. Specifies the leading dimension of matrix Z.
[out]ifail- pointer to rocblas_int. Array on the GPU of dimension n. If info = 0, the first nev elements of ifail are zero. If info = i <= n, ifail contains the indices of the i eigenvectors that failed to converge. Not referenced if evect is rocblas_evect_none.
[out]myInfo- pointer to a rocblas_int on the GPU. If info = 0, successful exit. If info = i <= n, i columns of Z did not converge. If info = n + i, the leading minor of order i of B is not positive definite.

Member Function/Subroutine Documentation

◆ rocsolver_chegvx_()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_chegvx::rocsolver_chegvx_ ( type(c_ptr), value  handle,
integer(kind(rocblas_eform_ax)), value  itype,
integer(kind(rocblas_evect_original)), value  evect,
integer(kind(rocblas_erange_all)), value  erange,
integer(kind(rocblas_fill_upper)), value  uplo,
integer(c_int), value  n,
type(c_ptr), value  a,
integer(c_int), value  lda,
type(c_ptr), value  b,
integer(c_int), value  ldb,
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  nev,
type(c_ptr), value  w,
type(c_ptr), value  z,
integer(c_int), value  ldz,
type(c_ptr), value  ifail,
type(c_ptr), value  myinfo 
)

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