# rocsolver_slarfb Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_slarfb Interface Reference
hipfort_rocsolver::rocsolver_slarfb Interface Reference

LARFB applies a block reflector H to a general m-by-n matrix A. More...

## Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_slarfb_ (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda)

integer(kind(rocblas_status_success)) function rocsolver_slarfb_full_rank (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda)

integer(kind(rocblas_status_success)) function rocsolver_slarfb_rank_0 (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda)

integer(kind(rocblas_status_success)) function rocsolver_slarfb_rank_1 (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda)

## Detailed Description

LARFB applies a block reflector H to a general m-by-n matrix A.

The block reflector H is applied in one of the following forms, depending on the values of side and trans:

$\begin{array}{cl} HA & \: \text{(No transpose from the left),}\newline H'A & \: \text{(Transpose or conjugate transpose from the left),}\newline AH & \: \text{(No transpose from the right), or}\newline AH' & \: \text{(Transpose or conjugate transpose from the right).} \end{array}$

The block reflector H is defined as the product of k Householder matrices as

$\begin{array}{cl} H = H_1H_2\cdots H_k & \: \text{if direct indicates forward direction, or} \newline H = H_k\cdots H_2H_1 & \: \text{if direct indicates backward direction} \end{array}$

H is never stored. It is calculated as

$H = I - VTV'$

where the i-th column of matrix V contains the Householder vector associated with $$H_i$$, if storev is column-wise; or

$H = I - V'TV$

where the i-th row of matrix V contains the Householder vector associated with $$H_i$$, if storev is row-wise. T is the associated triangular factor as computed by LARFT.

Parameters
 [in] handle rocblas_handle. [in] side rocblas_side. Specifies from which side to apply H. [in] trans rocblas_operation. Specifies whether the block reflector or its transpose/conjugate transpose is to be applied. [in] direct rocblas_direct. Specifies the direction in which the Householder matrices are to be applied to generate H. [in] storev rocblas_storev. Specifies how the Householder vectors are stored in matrix V. [in] m rocblas_int. m >= 0. Number of rows of matrix A. [in] n rocblas_int. n >= 0. Number of columns of matrix A. [in] k rocblas_int. k >= 1. The number of Householder matrices. [in] V pointer to type. Array on the GPU of size ldv*k if column-wise, ldv*n if row-wise and applying from the right, or ldv*m if row-wise and applying from the left. The matrix of Householder vectors. [in] ldv rocblas_int. ldv >= k if row-wise, ldv >= m if column-wise and applying from the left, or ldv >= n if column-wise and applying from the right. Leading dimension of V. [in] T pointer to type. Array on the GPU of dimension ldt*k. The triangular factor of the block reflector. [in] ldt rocblas_int. ldt >= k. The leading dimension of T. [in,out] A pointer to type. Array on the GPU of size lda*n. On entry, the matrix A. On exit, it is overwritten with H*A, A*H, H'*A, or A*H'. [in] lda rocblas_int. lda >= m. Leading dimension of A.

## ◆ rocsolver_slarfb_()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_ ( type(c_ptr), value handle, integer(kind(rocblas_side_left)), value side, integer(kind(rocblas_operation_none)), value trans, integer(kind(rocblas_forward_direction)), value myDirect, integer(kind(rocblas_column_wise)), value storev, integer(c_int), value m, integer(c_int), value n, integer(c_int), value k, type(c_ptr), value V, integer(c_int), value ldv, type(c_ptr), value T, integer(c_int), value ldt, type(c_ptr), value A, integer(c_int), value lda )

## ◆ rocsolver_slarfb_full_rank()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_full_rank ( type(c_ptr) handle, integer(kind(rocblas_side_left)) side, integer(kind(rocblas_operation_none)) trans, integer(kind(rocblas_forward_direction)) myDirect, integer(kind(rocblas_column_wise)) storev, integer(c_int) m, integer(c_int) n, integer(c_int) k, real(c_float), dimension(:,:), target V, integer(c_int) ldv, real(c_float), dimension(:,:), target T, integer(c_int) ldt, real(c_float), dimension(:,:), target A, integer(c_int) lda )

## ◆ rocsolver_slarfb_rank_0()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_rank_0 ( type(c_ptr) handle, integer(kind(rocblas_side_left)) side, integer(kind(rocblas_operation_none)) trans, integer(kind(rocblas_forward_direction)) myDirect, integer(kind(rocblas_column_wise)) storev, integer(c_int) m, integer(c_int) n, integer(c_int) k, real(c_float), target V, integer(c_int) ldv, real(c_float), target T, integer(c_int) ldt, real(c_float), target A, integer(c_int) lda )

## ◆ rocsolver_slarfb_rank_1()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_rank_1 ( type(c_ptr) handle, integer(kind(rocblas_side_left)) side, integer(kind(rocblas_operation_none)) trans, integer(kind(rocblas_forward_direction)) myDirect, integer(kind(rocblas_column_wise)) storev, integer(c_int) m, integer(c_int) n, integer(c_int) k, real(c_float), dimension(:), target V, integer(c_int) ldv, real(c_float), dimension(:), target T, integer(c_int) ldt, real(c_float), dimension(:), target A, integer(c_int) lda )

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