|
Uni20
Asynchronous tensor and runtime library.
|
In-place and value-producing dense self-adjoint eigensystems. More...
#include <uni20/common/trace.hpp>#include <uni20/linalg/backends/lapack/self_adjoint_eigh.hpp>#include <uni20/linalg/blas/mdspan_matrix.hpp>#include <uni20/linalg/decomposition_precision.hpp>#include <uni20/linalg/dispatch.hpp>#include <uni20/linalg/operation_tags.hpp>#include <uni20/tensor/conjugate_inplace.hpp>#include <uni20/tensor/copy.hpp>#include <uni20/tensor/output.hpp>#include <uni20/tensor/tensor.hpp>#include <array>#include <concepts>#include <type_traits>#include <utility>Go to the source code of this file.
Classes | |
| struct | uni20::linalg::SelfAdjointEighResult< EigenvalueTensor, EigenvectorTensor > |
Owning eigenvalues and eigenvectors returned by eigh. More... | |
Namespaces | |
| namespace | uni20 |
| namespace | uni20::linalg |
Functions | |
| template<KernelBackendSelector BackendSelector, class MatrixTensor > requires uni20::OwningTensor<MatrixTensor> && uni20::MutableRankedImmediateTensorView<MatrixTensor, 2> && (!std::is_lvalue_reference_v<MatrixTensor>) && (!std::is_const_v<std::remove_reference_t<MatrixTensor>>) | |
| auto | uni20::linalg::eigh (BackendSelector &&selector, MatrixTensor &&matrix, MatrixTriangle triangle=MatrixTriangle::Upper, std::optional< Precision > requested={}) |
| Consume an owning matrix and return its complete self-adjoint eigensystem through an explicit selector. | |
| template<KernelBackendSelector BackendSelector, uni20::RankedTensorView< 2 > MatrixTensor> | |
| auto | uni20::linalg::eigh (BackendSelector &&selector, MatrixTensor const &matrix, MatrixTriangle triangle=MatrixTriangle::Upper, std::optional< Precision > requested={}) |
| Preserve a matrix and return its complete self-adjoint eigensystem through an explicit selector. | |
| template<RankedTensorView< 2 > Matrix> | |
| auto | uni20::linalg::eigh (Matrix &&matrix, Precision p, MatrixTriangle triangle=MatrixTriangle::Upper) |
| Compute a self-adjoint eigensystem at explicit working precision with optional output settings. | |
| template<class MatrixTensor > requires uni20::OwningTensor<MatrixTensor> && uni20::MutableRankedImmediateTensorView<MatrixTensor, 2> && (!std::is_lvalue_reference_v<MatrixTensor>) && (!std::is_const_v<std::remove_reference_t<MatrixTensor>>) | |
| auto | uni20::linalg::eigh (MatrixTensor &&matrix, MatrixTriangle triangle=MatrixTriangle::Upper, std::optional< Precision > requested={}) |
| Consume an owning matrix and return its complete self-adjoint eigensystem. | |
| template<uni20::RankedTensorView< 2 > MatrixTensor> | |
| auto | uni20::linalg::eigh (MatrixTensor const &matrix, MatrixTriangle triangle=MatrixTriangle::Upper, std::optional< Precision > requested={}) |
| Preserve a matrix and return its complete self-adjoint eigensystem. | |
| template<KernelBackendSelector Selector, RankedTensorView< 2 > Matrix> | |
| auto | uni20::linalg::eigh (Selector &&selector, Matrix &&matrix, Precision p, MatrixTriangle triangle=MatrixTriangle::Upper) |
| Compute a self-adjoint eigensystem at explicit working precision with optional output settings. | |
| template<KernelBackendSelector BackendSelector, uni20::MutableRankedTensorView< 1 > EigenvalueTensor, uni20::MutableRankedTensorView< 2 > MatrixTensor> | |
| void | uni20::linalg::self_adjoint_eigh (BackendSelector &&selector, EigenvalueTensor &&eigenvalues, MatrixTensor &&matrix_work, SelfAdjointEighOptions options={}, std::optional< Precision > requested={}) |
| Compute an in-place self-adjoint eigensystem through an explicit selector. | |
| template<uni20::MutableRankedTensorView< 1 > EigenvalueTensor, uni20::MutableRankedTensorView< 2 > MatrixTensor> | |
| void | uni20::linalg::self_adjoint_eigh (EigenvalueTensor &&eigenvalues, MatrixTensor &&matrix_work, SelfAdjointEighOptions options={}, std::optional< Precision > requested={}) |
| Compute an in-place self-adjoint eigensystem using tensor storage policy. | |
| template<KernelBackendSelector Selector, MutableRankedTensorView< 1 > V, MutableRankedTensorView< 2 > A> | |
| void | uni20::linalg::self_adjoint_eigh (Selector &&selector, V &&eigenvalues, A &&matrix_work, Precision p, SelfAdjointEighOptions options={}) |
| Compute a destructive decomposition at explicit precision with optional output settings. | |
| template<MutableRankedTensorView< 1 > V, MutableRankedTensorView< 2 > A> | |
| void | uni20::linalg::self_adjoint_eigh (V &&eigenvalues, A &&matrix_work, Precision p, SelfAdjointEighOptions options={}) |
| Compute a destructive decomposition at explicit precision with optional output settings. | |
In-place and value-producing dense self-adjoint eigensystems.
Precision may be inferred from the input matrix or supplied explicitly. Fixed results require their native precision; runtime decompositions require finite precision. Owning results record the selected default.