elpa_eigen...at_complex(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

πŸ’– elpa_eigenvalues_float_complex(3) β€” the Library Functions Manual girlie is here to explain it ✨

okay so bestie, listen: this is the page for elpa_eigenvalues_float_complex, and it's literally the glow-up you need when you want all the eigenvalues Ξ» of a complex hermitian eigenproblem. the whole vibe is:

A*Q = Ξ»*Q

that's it. that's the moment. πŸŽ€


✨ NAME ✨

elpa_eigenvalues_float_complex β€” computes all eigenvalues Ξ» for a complex hermitian eigenproblem: A*Q = Ξ»*Q πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

πŸ’œ FORTRAN INTERFACE

use elpa
class(elpa_t), pointer :: elpa_handle

call elpa_handle%eigenvalues_float_complex (a, ev, error)

and here's the definition of the input and output variables, bestie β€” don't skip, iykyk:

  • class(elpa_t) :: elpa_handle β€” an instance of the ELPA object. your main character handle, fr fr.
  • real(kind=c_float_complex) :: a OR type(c_ptr) :: a β€” the local part of the host/device matrix A for which the eigenvalues 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 hermitian β€” and no, this is not checked by the routine, so that's on you 🫢. in case of a GPU build a can be a pointer to the device memory.
  • real(kind=c_float) :: ev OR type(c_ptr) :: ev β€” the global array where the eigenvalues Ξ» will be stored in ascending order. in case of a GPU build ev can be a pointer to the device memory. and note that complex hermitian matrices also have real eigenvalues β€” yes really, it's giving "math is iconic" 🌸.
  • 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_eigenvalues_float_complex(elpa_t elpa_handle, float complex
*a, float *ev, int *error);

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

and with the definitions of the input and output variables:

  • elpa_t elpa_handle; β€” the handle to the ELPA object πŸ‘‘
  • float complex *a; OR std::complex<float> *a; β€” the local part of the host/device matrix A for which the eigenvalues 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 A has to be hermitian, and again this is not checked by the routine πŸ™ˆ. in case of a GPU build a can be a pointer to the device memory.
  • float *ev; β€” the global array 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, periodt πŸ’….
  • 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 of a complex hermitian matrix. and listen β€” the functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvalues_float_complex can be called. no shortcuts, babe, the order is the order 🧚

okay lowkey important: skip the setup and you're not slaying, you're just… not doing it. call them first. πŸ’€

πŸ‘‘ SEE ALSO πŸ‘‘

elpa2_print_kernels(1) elpa_init(3) elpa_allocate(3) elpa_set(3) elpa_setup(3) elpa_strerr(3) elpa_skew_eigenvalues(3) elpa_eigenvectors(3) elpa_skew_eigenvectors(3) elpa_cholesky(3) elpa_invert_triangular(3) elpa_solve_tridiagonal(3) elpa_eigenvalues(3) elpa_uninit(3) elpa_deallocate(3)

the whole friend group, fr fr β€” go read them too πŸ«ΆπŸ’–


and that's the page, bestie!! this cutie was brought to you by ELPA, dated Thu Nov 28 2024 β€” like, the manual name and everything. mwah, go compute those eigenvalues. πŸ’‹βœ¨πŸ¦‹πŸŒΈπŸŽ€

πŸ“¦ where this page comes from