# rocsolver_ssygst_strided_batched Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_ssygst_strided_batched Interface Reference
hipfort_rocsolver::rocsolver_ssygst_strided_batched Interface Reference

SYGST_STRIDED_BATCHED reduces a batch of real symmetric-definite generalized eigenproblems to standard form. More...

## Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_ssygst_strided_batched_ (handle, itype, uplo, n, A, lda, strideA, B, ldb, strideB, batch_count)

integer(kind(rocblas_status_success)) function rocsolver_ssygst_strided_batched_full_rank (handle, itype, uplo, n, A, lda, strideA, B, ldb, strideB, batch_count)

integer(kind(rocblas_status_success)) function rocsolver_ssygst_strided_batched_rank_0 (handle, itype, uplo, n, A, lda, strideA, B, ldb, strideB, batch_count)

integer(kind(rocblas_status_success)) function rocsolver_ssygst_strided_batched_rank_1 (handle, itype, uplo, n, A, lda, strideA, B, ldb, strideB, batch_count)

## Detailed Description

SYGST_STRIDED_BATCHED reduces a batch of real symmetric-definite generalized eigenproblems to standard form.

(This is the blocked version of the algorithm).

For each instance in the batch, the problem solved by this function is either of the form

$\begin{array}{cl} A_i X_i = \lambda B_i X_i & \: \text{1st form,}\newline A_i B_i X_i = \lambda X_i & \: \text{2nd form, or}\newline B_i A_i X_i = \lambda X_i & \: \text{3rd form,} \end{array}$

depending on the value of itype.

If the problem is of the 1st form, then $$A_i$$ is overwritten with

$\begin{array}{cl} U_i^{-T} A_i U_i^{-1}, & \: \text{or}\newline L_i^{-1} A_i L_i^{-T}, \end{array}$

where the symmetric-definite matrix $$B_i$$ has been factorized as either $$U_i^T U_i$$ or $$L_i L_i^T$$ as returned by POTRF, depending on the value of uplo.

If the problem is of the 2nd or 3rd form, then A is overwritten with

$\begin{array}{cl} U_i A_i U_i^T, & \: \text{or}\newline L_i^T A_i L_i, \end{array}$

also depending on the value of uplo.

Parameters
 [in] handle rocblas_handle. [in] itype rocblas_eform. Specifies the form of the generalized eigenproblems. [in] uplo rocblas_fill. Specifies whether the upper or lower part of the matrices A_i are stored, and whether the factorization applied to B_i was upper or lower triangular. If uplo indicates lower (or upper), then the upper (or lower) parts of A_i and B_i are not used. [in] n rocblas_int. n >= 0. The matrix dimensions. [in,out] A pointer to type. Array on the GPU (the size depends on the value of strideA). On entry, the matrices A_i. On exit, the transformed matrices associated with the equivalent standard eigenvalue problems. [in] lda rocblas_int. lda >= n. Specifies the leading dimension of A_i. [in] strideA rocblas_stride. Stride from the start of one matrix A_i to the next one A_(i+1). There is no restriction for the value of strideA. Normal use case is strideA >= lda*n. [out] B pointer to type. Array on the GPU (the size depends on the value of strideB). The triangular factors of the matrices B_i, as returned by POTRF_STRIDED_BATCHED. [in] ldb rocblas_int. ldb >= n. Specifies the leading dimension of B_i. [in] strideB rocblas_stride. Stride from the start of one matrix B_i to the next one B_(i+1). There is no restriction for the value of strideB. Normal use case is strideB >= ldb*n. [in] batch_count rocblas_int. batch_count >= 0. Number of matrices in the batch.

## ◆ rocsolver_ssygst_strided_batched_()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssygst_strided_batched::rocsolver_ssygst_strided_batched_ ( type(c_ptr), value handle, integer(kind(rocblas_eform_ax)), value itype, integer(kind(rocblas_fill_upper)), value uplo, integer(c_int), value n, type(c_ptr), value A, integer(c_int), value lda, integer(c_int64_t), value strideA, type(c_ptr), value B, integer(c_int), value ldb, integer(c_int64_t), value strideB, integer(c_int), value batch_count )

## ◆ rocsolver_ssygst_strided_batched_full_rank()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssygst_strided_batched::rocsolver_ssygst_strided_batched_full_rank ( type(c_ptr) handle, integer(kind(rocblas_eform_ax)) itype, integer(kind(rocblas_fill_upper)) uplo, integer(c_int) n, real(c_float), dimension(:,:), target A, integer(c_int) lda, integer(c_int64_t) strideA, real(c_float), dimension(:,:), target B, integer(c_int) ldb, integer(c_int64_t) strideB, integer(c_int) batch_count )

## ◆ rocsolver_ssygst_strided_batched_rank_0()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssygst_strided_batched::rocsolver_ssygst_strided_batched_rank_0 ( type(c_ptr) handle, integer(kind(rocblas_eform_ax)) itype, integer(kind(rocblas_fill_upper)) uplo, integer(c_int) n, real(c_float), target A, integer(c_int) lda, integer(c_int64_t) strideA, real(c_float), target B, integer(c_int) ldb, integer(c_int64_t) strideB, integer(c_int) batch_count )

## ◆ rocsolver_ssygst_strided_batched_rank_1()

 integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssygst_strided_batched::rocsolver_ssygst_strided_batched_rank_1 ( type(c_ptr) handle, integer(kind(rocblas_eform_ax)) itype, integer(kind(rocblas_fill_upper)) uplo, integer(c_int) n, real(c_float), dimension(:), target A, integer(c_int) lda, integer(c_int64_t) strideA, real(c_float), dimension(:), target B, integer(c_int) ldb, integer(c_int64_t) strideB, integer(c_int) batch_count )

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