|
Uni20
Asynchronous tensor and runtime library.
|
LAPACK backend for dense Schur decomposition and block reordering. More...
#include "common.hpp"#include <uni20/backend/blas/blas_int.hpp>#include <uni20/backend/lapack/lapack.hpp>#include <uni20/common/trace.hpp>#include <uni20/core/scalar_concepts.hpp>#include <uni20/linalg/blas/mdspan_matrix.hpp>#include <uni20/linalg/dispatch.hpp>#include <uni20/linalg/operation_tags.hpp>#include <uni20/tensor/access.hpp>#include <uni20/tensor/concepts.hpp>#include <algorithm>#include <concepts>#include <span>#include <type_traits>#include <vector>Go to the source code of this file.
Namespaces | |
| namespace | uni20 |
| namespace | uni20::linalg |
| namespace | uni20::linalg::lapack_detail |
Functions | |
| template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan> | |
| consteval auto | uni20::linalg::lapack_detail::hessenberg_schur_acceptance () |
| Report compile-time eligibility for resolved real upper-Hessenberg Schur decomposition. | |
| template<class Operation , uni20::MutableRankedStridedMdspecLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspecLike< 2 > SchurVectorMdspan> requires (std::same_as<Operation, schur_op> || std::same_as<Operation, hessenberg_schur_op>) && uni20::HostWritableMdspec<MatrixMdspan> && uni20::HostWritableMdspec<SchurVectorMdspan> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend const &, Operation const &, MatrixMdspan &, std::span< EigenScalar > &, SchurVectorMdspan &) |
| Report eligibility for host-accessible mdspec Schur decomposition. | |
| template<uni20::MutableRankedStridedMdspecLike< 2 > SchurFormMdspan, uni20::MutableRankedStridedMdspecLike< 2 > SchurVectorMdspan> requires uni20::HostWritableMdspec<SchurFormMdspan> && uni20::HostWritableMdspec<SchurVectorMdspan> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend const &, schur_reorder_op const &, SchurFormMdspan &, SchurVectorMdspan &) |
| Report eligibility for host-accessible mdspec Schur reordering. | |
| template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan> | |
| consteval auto | uni20::linalg::lapack_detail::schur_acceptance () |
| Report compile-time eligibility for resolved LAPACK Schur decomposition. | |
| template<uni20::MutableRankedStridedMdspanLike< 2 > SchurFormMdspan, uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan> | |
| consteval auto | uni20::linalg::lapack_detail::schur_reorder_acceptance () |
| Report compile-time eligibility for resolved LAPACK Schur reordering. | |
| template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan> | |
| KernelAttempt | uni20::linalg::lapack_detail::try_hessenberg_schur (hessenberg_schur_op const &op, MatrixMdspan &hessenberg, std::span< EigenScalar > eigenvalues, SchurVectorMdspan &schur_vectors) |
Compute a real upper-Hessenberg Schur form through LAPACK hseqr. | |
| template<class Operation , uni20::MutableRankedStridedMdspecLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspecLike< 2 > SchurVectorMdspan> requires (std::same_as<Operation, schur_op> || std::same_as<Operation, hessenberg_schur_op>) && uni20::HostWritableMdspec<MatrixMdspan> && uni20::HostWritableMdspec<SchurVectorMdspan> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, Operation const &operation, MatrixMdspan &matrix_work, std::span< EigenScalar > eigenvalues, SchurVectorMdspan &schur_vectors) |
| Resolve host access and run a LAPACK Schur decomposition. | |
| template<uni20::MutableRankedStridedMdspecLike< 2 > SchurFormMdspan, uni20::MutableRankedStridedMdspecLike< 2 > SchurVectorMdspan> requires uni20::HostWritableMdspec<SchurFormMdspan> && uni20::HostWritableMdspec<SchurVectorMdspan> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, schur_reorder_op const &operation, SchurFormMdspan &schur_form, SchurVectorMdspan &schur_vectors) |
| Resolve host access and run LAPACK Schur reordering. | |
| template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan> | |
| KernelAttempt | uni20::linalg::lapack_detail::try_schur (schur_op const &op, MatrixMdspan &matrix_work, std::span< EigenScalar > eigenvalues, SchurVectorMdspan &schur_vectors) |
Compute a dense Schur form through LAPACK gees. | |
| template<uni20::MutableRankedStridedMdspanLike< 2 > SchurFormMdspan, uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan> | |
| KernelAttempt | uni20::linalg::lapack_detail::try_schur_reorder (schur_reorder_op const &op, SchurFormMdspan &schur_form, SchurVectorMdspan &schur_vectors) |
Move one real Schur block or complex Schur entry through LAPACK trexc. | |
LAPACK backend for dense Schur decomposition and block reordering.