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_full_rank (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) |
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'AQ \]
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_1H_2\cdots H_k & \text{if uplo indicates lower, or}\newline Q = H_nH_{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_iv_i' \]
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' - WV' \]
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, | ||
real(c_float) | 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) | tau, | ||
type(c_ptr) | 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) | tau, | ||
type(c_ptr) | 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) | tau, | ||
type(c_ptr) | W, | ||
integer(c_int) | ldw | ||
) |
The documentation for this interface was generated from the following file: