1#ifndef SYMMETRC_EIGENSOLVER_CL_HPP
2#define SYMMETRC_EIGENSOLVER_CL_HPP
12template <
bool need_eigenvectors = true>
25 internal::tridiagonal_eigensolver_cl<need_eigenvectors>(
27 if (need_eigenvectors && A.
rows() > 2) {
Represents an arithmetic matrix on the OpenCL device.
auto block_zero_based(T &&a, int start_row, int start_col, int rows, int cols)
Block of a kernel generator expression.
auto diagonal(T &&a)
Diagonal of a kernel generator expression.
void block_householder_tridiag_cl(const matrix_cl< double > &A, matrix_cl< double > &packed, const int r=60)
Tridiagonalize a symmetric matrix using block Housholder algorithm.
void block_apply_packed_Q_cl(const matrix_cl< double > &packed_cl, matrix_cl< double > &A, const int r=200)
Calculates Q*A in-place.
Eigen::Matrix< complex_return_t< value_type_t< EigMat > >, -1, -1 > eigenvectors(const EigMat &m)
Return the eigenvectors of a (real-valued) matrix.
void symmetric_eigensolver(const matrix_cl< double > &A, matrix_cl< double > &eigenvalues, matrix_cl< double > &eigenvectors)
Eigen::Matrix< complex_return_t< value_type_t< EigMat > >, -1, 1 > eigenvalues(const EigMat &m)
Return the eigenvalues of a (real-valued) matrix.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...