elpa_eigenvectors(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

✨ elpa_eigenvectors(3) ✨

okay bestie, this is the elpa_eigenvectors(3) page from the Library Functions Manual, and it is literally the main-character routine for solving a real symmetric or complex hermitian eigenproblem:

A*Q = Ξ»*Q

There are also variations of this routine that can accept not only host but also device pointers as input/output. Names of these routines explicitly contain the corresponding datatypes: elpa_eigenvectors_double, elpa_eigenvectors_float, elpa_eigenvectors_double_complex, elpa_eigenvectors_float_complex.


🌸 SYNOPSIS 🌸

🫢 FORTRAN INTERFACE

use elpa
class(elpa_t), pointer :: elpa_handle

call elpa_handle%eigenvectors (a, ev, q, error)

With the definitions of the input and output variables:

  • class(elpa_t) :: elpa_handle β€” An instance of the ELPA object. Your handle, your main character energy πŸ’…
  • datatype :: a β€” The local part of matrix A for which the eigenvalues and (part of) eigenvectors should be computed. The dimensions of matrix a must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype of the matrix can be one of "real(kind=c_double)", "real(kind=c_float)", "complex(kind=c_double)", or "complex(kind=c_float)". The global matrix has to be symmetric or hermitian, this is not checked by the routine.
  • datatype_real :: ev β€” The global array where the eigenvalues Ξ» will be stored in ascending order. The datatype_real of ev can be either "real(kind=c_double)" or "real(kind=c_float)", depending of the datatype of the matrix. Note that complex hermitian matrices also have real eigenvalues. no cap, the Ξ» are real even when the matrix is complex πŸ’–
  • datatype :: q β€” The storage space for the computed eigenvectors Q. The number of requested eigenvectors must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype of the matrix can be one of "real(kind=c_double)", "real(kind=c_float)", "complex(kind=c_double)", or "complex(kind=c_float)".
  • integer, optional :: error β€” The return error code of the function. Should be "ELPA_OK". The error code can be queried with the function elpa_strerr(3).

πŸ¦‹ C/C++ INTERFACE

#include <elpa/elpa.h>
elpa_t elpa_handle;

void elpa_eigenvectors(elpa_t elpa_handle, datatype *a, datatype_real *ev, datatype *q, int *error);

With the definitions of the input and output variables:

  • elpa_t elpa_handle; β€” The handle to the ELPA object. periodt πŸŽ€
  • datatype *a; β€” The local part of matrix A for which the eigenvalues and (part of) eigenvectors should be computed. The dimensions of the matrix must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype can be one of "double", "float", "double complex"/"std::complex<double>", "float complex"/"std::complex<float>" for C/C++. The global matrix has to be symmetric or hermitian, this is not checked by the routine.
  • datatype_real *ev; β€” The global array where the eigenvalues Ξ» will be stored in ascending order. The datatype_real can be either "double" or "float", depending of the datatype of the matrix. Note that the eigenvalues of complex hermitian matrices are also real.
  • datatype *q; β€” The storage space for the computed eigenvectors Q. The number of requested eigenvectors must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype can be one of "double", "float", "double complex"/"std::complex<double>", "float complex"/"std::complex<float>" for C/C++.
  • int *error; β€” The error code of the function. Should be "ELPA_OK". The error codes can be queried with elpa_strerr(3).

πŸ‘‘ DESCRIPTION πŸ‘‘

Computes the eigenvalues and (part of) the eigenvector spectrum of a real symmetric or complex hermitian matrix. The functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvectors can be called. In particular, the number of eigenvectors to be computed, "nev", must be set with elpa_set(3).

bestie, do NOT skip the setup steps. the routine is iconic but it is not psychic 😭 set your dimensions and "nev" first, then come through.

🌈 SEE ALSO 🌈


πŸ’œ this cutie page is from ELPA, dated Thu Nov 28 2024 β€” go forth and solve your eigenproblems, bestie, you got this 🫢✨

πŸ“¦ where this page comes from