ELPA_EIGENVECTORS_DOUBLE(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

πŸ’– NAME πŸ’–

Okay so this page is elpa_eigenvectors_double(3), from the Library Functions Manual β€” yes bestie, that’s the whole title situation, and we’re folding it in right here instead of copy-pasting the header line. The function itself is elpa_eigenvectors_double: it computes all eigenvalues and (part of) the eigenvectors for a real symmetric eigenproblem: A*Q = Ξ»*Q. Iconic. ✨


🌸 SYNOPSIS 🌸

πŸ’» FORTRAN INTERFACE

use elpa
class(elpa_t), pointer :: elpa_handle

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

Here’s what those variables mean, bestie:

  • class(elpa_t) :: elpa_handle β€” an instance of the ELPA object. Main character handle energy, lowkey.
  • real(kind=c_double) :: a OR type(c_ptr) :: a β€” the local part of the host/device matrix A for which all 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 global matrix has to be symmetric; this is not checked by the routine. In case of a GPU build, a can be a pointer to the device memory.
  • real(kind=c_double) :: ev OR type(c_ptr) :: ev β€” the host/device vector ev where the eigenvalues will be stored in ascending order. In case of a GPU build, ev can be a pointer to the device memory.
  • real(kind=c_double) :: q OR type(c_ptr) :: q β€” the host/device storage space for the computed eigenvectors. The number of requested eigenvectors must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). In case of a GPU build, q can be a pointer to the device memory.
  • 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_double(elpa_t elpa_handle, double *a, double *ev,
       double *q, int *error);

And here’s the C/C++ variable tea πŸ“:

  • elpa_t elpa_handle; β€” the handle to the ELPA object.
  • double *a; β€” the local part of the host/device matrix A for which the eigenpairs should be computed. The dimensions of the matrix must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The global matrix has to be symmetric; this is not checked by the routine. In case of a GPU build, a can be a pointer to the device memory.
  • double *ev; β€” the host/device storage for the computed eigenvalues. Eigenvalues will be stored in ascending order. In case of a GPU build, ev can be a pointer to the device memory.
  • double *q; β€” the host/device storage space for the computed eigenvectors. The number of requested eigenvectors must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). In case of a GPU build, q can be a pointer to the device memory.
  • int *error; β€” the error code of the function. Should be "ELPA_OK". The error codes can be queried with elpa_strerr(3).

πŸ¦‹ DESCRIPTION πŸ¦‹

elpa_eigenvectors_double computes the eigenvalues and (part of) the eigenvectors of a real symmetric matrix. Periodt.

The functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvectors_double can be called. In particular, the number of eigenvectors to be computed, "nev", must be set with elpa_set(3). No cap, that setup order is the vibe check. πŸ‘‘

Fr fr, the global matrix has to be symmetric β€” and this is not checked by the routine. So don’t come for the function if you feed it chaos. πŸ’€

🌈 SEE ALSO 🌈


Cute little sign-off, bestie: this page’s source/version is ELPA, dated Thu Nov 28 2024, and the footer title is elpa_eigenvectors_double(3). Slay, read the docs, hydrate, and call elpa_setup(3) before you call this. πŸ’…πŸŽ€πŸ«Ά

πŸ“¦ where this page comes from