elpa_eigenvalues_float(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

✨ NAME ✨

okay so elpa_eigenvalues_float β€” this icon literally computes all eigenvalues Ξ» for a real symmetric eigenproblem: A*Q = Ξ»*Q. no cap, that's the whole vibe. πŸ’…

(from the Library Functions Manual, bestie 🫢)


🌸 SYNOPSIS 🌸

πŸ’» FORTRAN INTERFACE

yeah so first up, the Fortran girlies do this:

use elpa
class(elpa_t), pointer :: elpa_handle

call elpa_handle%eigenvalues_float (a, ev, error)

and here's what all those variables mean, fr fr:

  • class(elpa_t) :: elpa_handle β€” an instance of the ELPA object. she's the main character πŸ”₯
  • real(kind=c_float) :: 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 symmetric, and 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_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. 🌈
  • 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

C/C++ besties, y'all do:

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

void elpa_eigenvalues_float(elpa_t elpa_handle, float *a, float *ev, int
       *error);

and the deets:

  • elpa_t elpa_handle; β€” the handle to the ELPA object. iconic. πŸ‘‘
  • 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 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, so don't come for her if you fed her a non-symmetric mess)
  • datatype_real *ev; β€” the array where the eigenvalues Ξ» will be stored in ascending order. eigenvalues will be stored in ascending order. in case of a GPU build, ev can be a pointer to the device memory. yes, ascending twice, she's consistent πŸ’…
  • int *error; β€” the error code of the function. should be "ELPA_OK". the error codes can be queried with elpa_strerr(3) ✨

πŸŽ€ DESCRIPTION πŸŽ€

so what does she do? she computes the eigenvalues of a float precision real symmetric matrix. periodt.

but listen: elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvalues_float can be called. like, do the pregame first, bestie. no shortcuts. 😭


🌟 SEE ALSO 🌟

the whole friend group, lowkey essential:


xoxo, ELPA 🌸 β€” Thu Nov 28 2024 β€” elpa_eigenvalues_float(3) out πŸ’–

πŸ“¦ where this page comes from