rocsolver_slatrd Interface Reference#
LATRD computes the tridiagonal form of k rows and columns of a symmetric/hermitian matrix A, as well as the matrix W needed to update the remaining part of A. More...
Public Member Functions | |
| integer(kind(rocblas_status_success)) function | rocsolver_slatrd_ (handle, uplo, n, k, a, lda, e, tau, w, ldw) |
| integer(kind(rocblas_status_success)) function | rocsolver_slatrd_rank_0 (handle, uplo, n, k, a, lda, e, tau, w, ldw) |
| integer(kind(rocblas_status_success)) function | rocsolver_slatrd_rank_1 (handle, uplo, n, k, a, lda, e, tau, w, ldw) |
| integer(kind(rocblas_status_success)) function | rocsolver_slatrd_full_rank (handle, uplo, n, k, a, lda, e, tau, w, ldw) |
Detailed Description
LATRD computes the tridiagonal form of k rows and columns of a symmetric/hermitian matrix A, as well as the matrix W needed to update the remaining part of A.
The reduced form is given by:
\[ T = Q^H A Q \]
If uplo is lower, the first k rows and columns of T form the tridiagonal block. If uplo is upper, then the last k rows and columns of T form the tridiagonal block. Q is an orthogonal/unitary matrix represented as the product of Householder matrices
\[ \begin{array}{cl} Q = H(1)H(2)\cdots H(k) & \text{if uplo indicates lower, or}\\% Q = H(n)H(n-1)\cdots H(n-k+1) & \text{if uplo is upper}. \end{array} \]
Each Householder matrix \(H(i)\) is given by
\[ H(i) = I - \text{tau}[i]\cdot v_i^{}v_i^H \]
where tau[ \(i\)] is the corresponding Householder scalar. When uplo indicates lower, the first \(i\) elements of the Householder vector \(v_i\) are zero, and \(v_i[i+1] = 1\). If uplo is upper, the last n- \(i\) elements of the Householder vector \(v_i\) are zero, and \(v_i[i] = 1\).
The unreduced part of the matrix A can be updated using a rank update of the form:
\[ A = A - VW^H - WV^H \]
where V is the n-by-k matrix formed by the vectors \(v_i\).
- Parameters
-
[in] handle - rocblas_handle. [in] uplo - rocblas_fill. Specifies whether the upper or lower part of the matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used. [in] n - rocblas_int. n >= 0. The number of rows and columns of the matrix A. [in] k - rocblas_int. 0 <= k <= n. The number of rows and columns of the matrix A to be reduced. [in,out] A - pointer to type. Array on the GPU of dimension lda*n. On entry, the n-by-n matrix to be reduced. On exit, if uplo is lower, the first k columns have been reduced to tridiagonal form (given in the diagonal elements of A and the array E), the elements below the diagonal contain the possibly non-zero entries of the Householder vectors associated with Q, stored as columns. If uplo is upper, the last k columns have been reduced to tridiagonal form (given in the diagonal elements of A and the array E), the elements above the diagonal contain the possibly non-zero entries of the Householder vectors associated with Q, stored as columns. [in] lda - rocblas_int. lda >= n. The leading dimension of A. [out] E - pointer to real type. Array on the GPU of dimension n-1. If upper (lower), the last (first) k elements of E are the off-diagonal elements of the computed tridiagonal block. [out] tau - pointer to type. Array on the GPU of dimension n-1. If upper (lower), the last (first) k elements of tau are the Householder scalars related to Q. [out] W - pointer to type. Array on the GPU of dimension ldw*k. The n-by-k matrix needed to update the unreduced part of A. [in] ldw - rocblas_int. ldw >= n. The leading dimension of W.
Member Function/Subroutine Documentation
◆ rocsolver_slatrd_()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slatrd::rocsolver_slatrd_ | ( | type(c_ptr), value | handle, |
| integer(kind(rocblas_fill_upper)), value | uplo, | ||
| integer(c_int), value | n, | ||
| integer(c_int), value | k, | ||
| type(c_ptr), value | a, | ||
| integer(c_int), value | lda, | ||
| type(c_ptr), value | e, | ||
| type(c_ptr), value | tau, | ||
| type(c_ptr), value | w, | ||
| integer(c_int), value | ldw | ||
| ) |
◆ rocsolver_slatrd_full_rank()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slatrd::rocsolver_slatrd_full_rank | ( | type(c_ptr) | handle, |
| integer(kind(rocblas_fill_upper)) | uplo, | ||
| integer(c_int) | n, | ||
| integer(c_int) | k, | ||
| real(c_float), dimension(:,:), target | a, | ||
| integer(c_int) | lda, | ||
| real(c_float), dimension(:), target | e, | ||
| real(c_float), dimension(:), target | tau, | ||
| real(c_float), dimension(:,:), target | w, | ||
| integer(c_int) | ldw | ||
| ) |
◆ rocsolver_slatrd_rank_0()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slatrd::rocsolver_slatrd_rank_0 | ( | type(c_ptr) | handle, |
| integer(kind(rocblas_fill_upper)) | uplo, | ||
| integer(c_int) | n, | ||
| integer(c_int) | k, | ||
| real(c_float), target | a, | ||
| integer(c_int) | lda, | ||
| real(c_float), target | e, | ||
| real(c_float), target | tau, | ||
| real(c_float), target | w, | ||
| integer(c_int) | ldw | ||
| ) |
◆ rocsolver_slatrd_rank_1()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slatrd::rocsolver_slatrd_rank_1 | ( | type(c_ptr) | handle, |
| integer(kind(rocblas_fill_upper)) | uplo, | ||
| integer(c_int) | n, | ||
| integer(c_int) | k, | ||
| real(c_float), dimension(:), target | a, | ||
| integer(c_int) | lda, | ||
| real(c_float), dimension(:), target | e, | ||
| real(c_float), dimension(:), target | tau, | ||
| real(c_float), dimension(:), target | w, | ||
| integer(c_int) | ldw | ||
| ) |
The documentation for this interface was generated from the following file: