Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Namespaces | Functions
schur.hpp File Reference

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>
Include dependency graph for backends/lapack/schur.hpp:
This graph shows which files directly or indirectly include this file:

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.
 

Detailed Description

LAPACK backend for dense Schur decomposition and block reordering.