elpa_eigenvalues_double(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

πŸ’… elpa_eigenvalues_double β€” the elpa_eigenvalues_double(3) page, bestie edition

okay so this is a page from the Library Functions Manual and honestly? it's a bop. it's giving "find all the eigenvalues of a real symmetric problem" and we're gonna walk through it together, no gatekeeping πŸ’–


✨ NAME ✨

elpa_eigenvalues_double β€” computes, like, all the eigenvalues Ξ» for a real symmetric eigenproblem:

A*Q = Ξ»*Q

that's the whole vibe. main character energy fr fr 🌸


🫢 SYNOPSIS 🫢

🌈 FORTRAN INTERFACE

use elpa
class(elpa_t), pointer :: elpa_handle

call elpa_handle%eigenvalues_double (a, ev, error)

and here's the definitions of the input and output variables, because i would never leave you guessing πŸ’…

  • class(elpa_t) :: elpa_handle β€” an instance of the ELPA object. your handle. your little ELPA bestie.
  • real(kind=c_double) :: 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). also! the global matrix has to be symmetric, and this is not checked by the routine β€” so that's on you, not on ELPA 😭. 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 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

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

void elpa_eigenvalues_double(elpa_t elpa_handle, double *a, double *ev,
int *error);

and with the definitions of the input and output variables, icons only ✨

  • elpa_t elpa_handle; β€” the handle to the ELPA object.
  • double *a; β€” the local part of the host/device matrix A for which the eigenvalues should be computed. again, for the people in the back πŸ“’: 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, and this is not checked by the routine. in case of a GPU build a can be a pointer to the device memory.
  • datatype_real *ev; β€” the array where the eigenvalues Ξ» will be stored in ascending order. and yes, eigenvalues will be stored in ascending order. we said it twice because it matters πŸ’œ. in case of a GPU build ev 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 πŸ”₯

computes the eigenvalues of a double precision real symmetric matrix. that's the whole job, and it ate πŸ’…

⚠️ the functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvalues_double can be called. like, non-negotiable. do the prep work first, bestie. no skipping steps 😀

πŸ‘‘ SEE ALSO πŸ‘‘

your reading list, go off πŸ“šβœ¨

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)


and that's the page!! this one's brought to you by ELPA, dated Thu Nov 28 2024 β€” so go call elpa_init(3) first, mwah, talk later πŸ«ΆπŸ’–βœ¨

πŸ“¦ where this page comes from