elpa_eigen...le_complex(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

πŸ’… elpa_eigen...le_complex(3) β€” from the Library Functions Manual ✨

okay so bestie, this is the page for elpa_eigenvectors_double_complex, and it is very specific about what you pass in and when. Let’s get into it 🫢

🌸 NAME 🌸

elpa_eigenvectors_double_complex β€” computes all eigenvalues and (part of) the eigenvectors for a complex hermitian eigenproblem: A*Q = Ξ»*Q πŸ’–


✨ SYNOPSIS ✨

🧚 FORTRAN INTERFACE 🧚

okay so in Fortran you start like this, no cap:

use elpa
class(elpa_t), pointer :: elpa_handle

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

With the definitions of the input and output variables:

  • class(elpa_t) :: elpa_handle β€” An instance of the ELPA object. 🫢
  • real(kind=c_double_complex) :: 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. periodt.
  • 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. Note that complex hermitian matrices also have real eigenvalues. πŸ¦‹
  • real(kind=c_double_complex) :: 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;

// C:
void elpa_eigenvectors_double_complex(elpa_t elpa_handle, double complex
*a, double complex *ev, double complex *q, int *error);

// C++:
void elpa_eigenvalues_double_complex(elpa_t elpa_handle,
std::complex<double> *a, double *ev, std::complex<double> *q, int
*error);

With the definitions of the input and output variables:

  • elpa_t elpa_handle; β€” The handle to the ELPA object. πŸ‘‘
  • double complex *a; OR std::complex<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. not checked, bestie β€” don’t make it weird πŸ’€
  • 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 complex *q; OR std::complex<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 🌈

So this one computes the eigenvalues and (part of) the eigenvectors of a complex hermitian matrix. The functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvectors_double_complex can be called. Like, actually before. Not vibes-based. In particular, the number of eigenvectors to be computed, "nev", must be set with elpa_set(3). πŸŽ€


πŸ‘‘ SEE ALSO πŸ‘‘


okay that’s the whole page, bestie 🫢 source/version: ELPA; date: Thu Nov 28 2024; manual-page name: elpa_eigen...le_complex(3). slay ✨

πŸ“¦ where this page comes from