#include <lapack.h>
|
| void | operator() (const int n, const int lda, T *Mat_A, T *Mat_B, Real *eigen_val, T *eigen_vec) |
| | Computes all the eigenvalues and, optionally, the eigenvectors of a complex generalized Hermitian-definite eigenproblem.
|
| |
◆ Real
template<typename
T , typename Device >
◆ operator()()
template<typename
T , typename Device >
Computes all the eigenvalues and, optionally, the eigenvectors of a complex generalized Hermitian-definite eigenproblem.
This function solves the problem A*x = lambda*B*x, where A and B are Hermitian matrices, and B is also positive definite.
- Parameters
-
| n | The order of the matrices Mat_A and Mat_B. n >= 0. |
| lda | The leading dimension of the arrays Mat_A and Mat_B. lda >= max(1, n). |
| Mat_A | On entry, the Hermitian matrix A. On exit, it may be overwritten. |
| Mat_B | On entry, the Hermitian positive definite matrix B. On exit, it may be overwritten. |
| eigen_val | Array to store the computed eigenvalues in ascending order. |
| eigen_vec | If not nullptr, array to store the computed eigenvectors. |
- Note
- See LAPACK ZHEGVD or CHEGVD documentation for more details. This function assumes that A and B have the same leading dimensions, lda. This function copies B to auxiliary memory to avoid being overwritten.
The documentation for this struct was generated from the following file:
- /home/runner/work/abacus-develop/abacus-develop/source/source_base/module_container/ATen/kernels/lapack.h