elpa_eigenvectors_float(3)

πŸ“¦ version 2026.02.002, in nixpkgs unstable

πŸ’– NAME πŸ’–

Okay so bestie, this is elpa_eigenvectors_float(3) from the Library Functions Manual, and it computes all eigenvalues and (part of) the eigenvectors for a real symmetric eigenproblem: A*Q = Ξ»*Q πŸ’…βœ¨


🌸 SYNOPSIS 🌸

πŸŽ€ FORTRAN INTERFACE πŸŽ€

use elpa
class(elpa_t), pointer :: elpa_handle

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

With the definitions of the input and output variables:

  • class(elpa_t) :: elpa_handle β€” An instance of the ELPA object. Your main character handle, fr fr πŸ‘‘
  • real(kind=c_float) :: 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_float) :: 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_float) :: 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_float(elpa_t elpa_handle, float *a, float *ev,
       float *q, int *error);

With the definitions of the input and output variables:

  • elpa_t elpa_handle; β€” The handle to the ELPA object πŸ‘‘
  • float *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.
  • float *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.
  • float *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 ✨

Okay so listen β€” this computes the eigenvalues and (part of) the eigenvectors of a real symmetric matrix. The functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvectors_float can be called. In particular, the number of eigenvectors to be computed, "nev", must be set with elpa_set(3) ⭐

No cap: the global matrix has to be symmetric, and this routine does not check that for you. So don't come for this function if the matrix is giving chaos πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

Go give these besties a read, iykyk πŸ’–


This iconic page came from ELPA, dated Thu Nov 28 2024, and it's literally elpa_eigenvectors_float(3) β€” periodt. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from