Eigendecomposition

Functions

template<typename T, typename = std::enable_if_t<std::is_same_v<T, double> || std::is_same_v<T, float>>>
auto eigh(T wl, std::size_t nAntenna, std::size_t nBeam, const std::complex<T> *s, std::size_t lds, const std::complex<T> *w, std::size_t ldxyz, T *d, std::complex<T> *v, std::size_t ldv) -> std::pair<std::size_t, T>

Compute eigenvalues.

Parameters:
  • ctx[in] Context handle.

  • wl[in] Wavelength.

  • nAntenna[in] Number of antenna.

  • nBeam[in] Number of beam.

  • s[in] Optional 2D sensitivity array of size (nBeam, nBeam). May be null.

  • lds[in] Leading dimension of s.

  • w[in] 2D beamforming array of size (nAntenna, nBeam).

  • ldw[in] Leading dimension of w.

  • d[out] Eigenvalues. Size nBeam. Zero padded if number of computed eigenvalues < nBeam.

  • v[out] Eigenvectors. Size (nAntenna, nBeam). Zero padded if number of computed eigenvalues < nBeam.

Returns:

A pair consisting of the number of computed eigenvalues and a scaling factor required for processing visibilities.

template<typename T, typename = std::enable_if_t<std::is_same_v<T, double> || std::is_same_v<T, float>>>
auto eigh_gram(T wl, std::size_t nAntenna, std::size_t nBeam, const std::complex<T> *s, std::size_t lds, const std::complex<T> *w, std::size_t ldw, const T *xyz, std::size_t ldxyz, T *d, std::complex<T> *v, std::size_t ldv) -> std::pair<std::size_t, T>

Compute eigenvalues.

Parameters:
  • ctx[in] Context handle.

  • wl[in] Wavelength.

  • nAntenna[in] Number of antenna.

  • nBeam[in] Number of beam.

  • s[in] Optional 2D sensitivity array of size (nBeam, nBeam). May be null.

  • lds[in] Leading dimension of s.

  • w[in] 2D beamforming array of size (nAntenna, nBeam).

  • ldw[in] Leading dimension of w.

  • xyz[in] 2D antenna position array of size (nAntenna, 3).

  • ldxyz[in] Leading dimension of xyz.

  • d[out] Eigenvalues. Size nBeam. Zero padded if number of computed eigenvalues < nBeam.

  • v[out] Eigenvectors. Size (nAntenna, nBeam). Zero padded if number of computed eigenvalues < nBeam.

Returns:

A pair consisting of the number of computed eigenvalues and a scaling factor required for processing visibilities.