Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Concepts | Functions
uni20::linalg::lapack_detail Namespace Reference

Concepts

concept  SvdOperation
 

Functions

template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan>
consteval auto hessenberg_schur_acceptance ()
 Report compile-time eligibility for resolved real upper-Hessenberg Schur decomposition.
 
char lapack_matrix_norm (MatrixNorm kind, bool transposed)
 
char lapack_triangle (MatrixTriangle triangle)
 
template<class CoefficientMdspan , class RhsMdspan >
consteval auto linear_solve_acceptance ()
 
template<class LMdspan , class QMdspan , class MatrixMdspan >
consteval auto lq_acceptance ()
 
template<class Output , class MatrixMdspan >
consteval auto matrix_norm_acceptance ()
 
template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedMdspanLike< 2 > RightEigenvectorMdspan>
consteval auto nonsymmetric_eigen_acceptance ()
 Report compile-time eligibility for resolved LAPACK nonsymmetric eigenanalysis.
 
template<class QMdspan , class RMdspan , class MatrixMdspan >
consteval auto qr_acceptance ()
 
template<uni20::LapackScalar Scalar, class MatrixHandle , class ValueHandle >
KernelAttempt run_gesvd (char jobu, char jobvt, std::size_t rank, uni20::linalg::blas::BlasWritableMatrix< Scalar, MatrixHandle > const &matrix, uni20::linalg::blas::BlasWritableVector< uni20::make_real_t< Scalar >, ValueHandle > const &values, Scalar *left, blas_int left_leading_dimension, Scalar *right, blas_int right_leading_dimension)
 
template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan>
consteval auto schur_acceptance ()
 Report compile-time eligibility for resolved LAPACK Schur decomposition.
 
template<uni20::MutableRankedStridedMdspanLike< 2 > SchurFormMdspan, uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan>
consteval auto schur_reorder_acceptance ()
 Report compile-time eligibility for resolved LAPACK Schur reordering.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > EigenvalueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto self_adjoint_eigh_acceptance ()
 Report compile-time eligibility for resolved LAPACK self-adjoint eigenanalysis.
 
template<class MatrixMdspan >
void set_identity (MatrixMdspan &&matrix)
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (singular_values_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for resolved LAPACK singular values.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (svd_left_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< LeftMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for resolved LAPACK left singular vectors.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (svd_left_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for resolved input-overwriting LAPACK left singular vectors.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (svd_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< LeftMdspan >, std::type_identity< RightAdjointMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for resolved LAPACK exact SVD.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > OtherFactorMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (svd_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< OtherFactorMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for a resolved input-overwriting LAPACK exact SVD.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (svd_right_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for resolved input-overwriting LAPACK right singular vectors.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto svd_acceptance (svd_right_op const &, std::type_identity< SingularValueMdspan >, std::type_identity< RightAdjointMdspan >, std::type_identity< MatrixMdspan >)
 Report compile-time eligibility for resolved LAPACK right singular vectors.
 
template<class SingularValueMdspan , class MatrixMdspan >
consteval bool svd_base_types_supported ()
 
template<class FactorMdspan , class MatrixMdspan >
consteval bool svd_factor_types_supported ()
 
char svd_job (SvdVectorExtent extent)
 
template<uni20::LapackReal Scalar, uni20::MutableRankedStridedMdspanLike< 2 > EigenvectorMdspan>
consteval auto tridiagonal_eigen_acceptance ()
 Report compile-time eligibility for resolved LAPACK tridiagonal eigensystem dispatch.
 
template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan>
KernelAttempt 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<uni20::MutableRankedStridedMdspanLike< 2 > CoefficientMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RhsMdspan>
KernelAttempt try_linear_solve (CoefficientMdspan &coefficients, RhsMdspan &right_hand_sides, SolveInfo &info, SolveOptions< uni20::make_real_t< typename CoefficientMdspan::value_type > > const &options)
 
template<uni20::MutableRankedMdspanLike< 2 > LMdspan, uni20::MutableRankedMdspanLike< 2 > QMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_lq (LMdspan &l, QMdspan &q, MatrixMdspan &matrix_work)
 
template<class Output , uni20::RankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_matrix_norm (matrix_norm_op const &operation, Output &output, MatrixMdspan &matrix)
 
template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedMdspanLike< 2 > RightEigenvectorMdspan>
KernelAttempt try_nonsymmetric_eigen (nonsymmetric_eigen_op const &op, MatrixMdspan &matrix_work, std::span< EigenScalar > eigenvalues, RightEigenvectorMdspan &right_eigenvectors)
 Compute eigenvalues and optional right eigenvectors through LAPACK geev.
 
template<uni20::MutableRankedMdspanLike< 2 > QMdspan, uni20::MutableRankedMdspanLike< 2 > RMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_qr (QMdspan &q, RMdspan &r, MatrixMdspan &matrix_work)
 
template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedStridedMdspanLike< 2 > SchurVectorMdspan>
KernelAttempt 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 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.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > EigenvalueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_self_adjoint_eigh (self_adjoint_eigh_op const &op, EigenvalueMdspan &eigenvalues, MatrixMdspan &matrix_work)
 Compute an in-place symmetric or Hermitian eigensystem through syev or heev.
 
template<class SingularValueMdspan , class MatrixMdspan >
KernelAttempt try_singular_values_kernel (char jobu, char jobvt, SingularValueMdspan &&singular_values, MatrixMdspan &&matrix_work)
 
constexpr std::optional< std::size_t > try_size_product (std::size_t left, std::size_t right) noexcept
 Multiply allocation extents without wrapping std::size_t.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (singular_values_op const &, SingularValueMdspan &singular_values, MatrixMdspan &matrix_work)
 Compute exact singular values through LAPACK gesvd.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (svd_left_op const &op, SingularValueMdspan &singular_values, LeftMdspan &left_singular_vectors, MatrixMdspan &matrix_work)
 Compute singular values and left singular vectors through LAPACK gesvd.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (svd_left_op const &op, SingularValueMdspan &singular_values, MatrixMdspan &matrix_work)
 Compute reduced left singular vectors in the matrix input allocation.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (svd_op const &op, SingularValueMdspan &singular_values, LeftMdspan &left_singular_vectors, RightAdjointMdspan &right_singular_vectors_adjoint, MatrixMdspan &matrix_work)
 Compute an exact dense SVD through LAPACK gesvd.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > OtherFactorMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (svd_op const &op, SingularValueMdspan &singular_values, OtherFactorMdspan &other_factor, MatrixMdspan &matrix_work)
 Compute an exact dense SVD with one reduced factor overwriting the input allocation.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (svd_right_op const &op, SingularValueMdspan &singular_values, MatrixMdspan &matrix_work)
 Compute reduced right singular vectors in the matrix input allocation.
 
template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt try_svd (svd_right_op const &op, SingularValueMdspan &singular_values, RightAdjointMdspan &right_singular_vectors_adjoint, MatrixMdspan &matrix_work)
 Compute singular values and right singular vectors through LAPACK gesvd.
 
template<class Scalar , uni20::MutableRankedStridedMdspanLike< 2 > EigenvectorMdspan>
KernelAttempt try_tridiagonal_eigen (symmetric_tridiagonal_eigen_op const &op, std::span< Scalar > diagonal, std::span< Scalar > subdiagonal, EigenvectorMdspan &eigenvectors)
 Compute a real symmetric tridiagonal eigensystem through sterf or steqr.
 
template<class Function , uni20::HostWritableMdspec... Mdspecs>
requires std::same_as<std::invoke_result_t<Function&&, uni20::host_write_mdspan_t<Mdspecs>&...>, KernelAttempt>
KernelAttempt with_host_write_mdspans (Function &&function, Mdspecs &... mdspecs)
 Invoke a LAPACK attempt with host-writable mdspans under simultaneous leases.
 
template<class Scalar >
blas_int workspace_size (Scalar const &query)
 Convert a provider workspace query result to the configured LAPACK integer type.
 

Function Documentation

◆ hessenberg_schur_acceptance()

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.

◆ lapack_matrix_norm()

char uni20::linalg::lapack_detail::lapack_matrix_norm ( MatrixNorm  kind,
bool  transposed 
)
inline

◆ lapack_triangle()

char uni20::linalg::lapack_detail::lapack_triangle ( MatrixTriangle  triangle)
inline

◆ linear_solve_acceptance()

template<class CoefficientMdspan , class RhsMdspan >
consteval auto uni20::linalg::lapack_detail::linear_solve_acceptance ( )

◆ lq_acceptance()

template<class LMdspan , class QMdspan , class MatrixMdspan >
consteval auto uni20::linalg::lapack_detail::lq_acceptance ( )

◆ matrix_norm_acceptance()

template<class Output , class MatrixMdspan >
consteval auto uni20::linalg::lapack_detail::matrix_norm_acceptance ( )

◆ nonsymmetric_eigen_acceptance()

template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedMdspanLike< 2 > RightEigenvectorMdspan>
consteval auto uni20::linalg::lapack_detail::nonsymmetric_eigen_acceptance ( )

Report compile-time eligibility for resolved LAPACK nonsymmetric eigenanalysis.

◆ qr_acceptance()

template<class QMdspan , class RMdspan , class MatrixMdspan >
consteval auto uni20::linalg::lapack_detail::qr_acceptance ( )

◆ run_gesvd()

template<uni20::LapackScalar Scalar, class MatrixHandle , class ValueHandle >
KernelAttempt uni20::linalg::lapack_detail::run_gesvd ( char  jobu,
char  jobvt,
std::size_t  rank,
uni20::linalg::blas::BlasWritableMatrix< Scalar, MatrixHandle > const &  matrix,
uni20::linalg::blas::BlasWritableVector< uni20::make_real_t< Scalar >, ValueHandle > const &  values,
Scalar *  left,
blas_int  left_leading_dimension,
Scalar *  right,
blas_int  right_leading_dimension 
)

◆ schur_acceptance()

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.

◆ schur_reorder_acceptance()

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.

◆ self_adjoint_eigh_acceptance()

template<uni20::MutableRankedStridedMdspanLike< 1 > EigenvalueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::self_adjoint_eigh_acceptance ( )

Report compile-time eligibility for resolved LAPACK self-adjoint eigenanalysis.

◆ set_identity()

template<class MatrixMdspan >
void uni20::linalg::lapack_detail::set_identity ( MatrixMdspan &&  matrix)

◆ svd_acceptance() [1/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( singular_values_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for resolved LAPACK singular values.

◆ svd_acceptance() [2/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( svd_left_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< LeftMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for resolved LAPACK left singular vectors.

◆ svd_acceptance() [3/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( svd_left_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for resolved input-overwriting LAPACK left singular vectors.

◆ svd_acceptance() [4/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( svd_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< LeftMdspan >  ,
std::type_identity< RightAdjointMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for resolved LAPACK exact SVD.

◆ svd_acceptance() [5/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > OtherFactorMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( svd_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< OtherFactorMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for a resolved input-overwriting LAPACK exact SVD.

◆ svd_acceptance() [6/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( svd_right_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for resolved input-overwriting LAPACK right singular vectors.

◆ svd_acceptance() [7/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
consteval auto uni20::linalg::lapack_detail::svd_acceptance ( svd_right_op const &  ,
std::type_identity< SingularValueMdspan >  ,
std::type_identity< RightAdjointMdspan >  ,
std::type_identity< MatrixMdspan >   
)

Report compile-time eligibility for resolved LAPACK right singular vectors.

◆ svd_base_types_supported()

template<class SingularValueMdspan , class MatrixMdspan >
consteval bool uni20::linalg::lapack_detail::svd_base_types_supported ( )

◆ svd_factor_types_supported()

template<class FactorMdspan , class MatrixMdspan >
consteval bool uni20::linalg::lapack_detail::svd_factor_types_supported ( )

◆ svd_job()

char uni20::linalg::lapack_detail::svd_job ( SvdVectorExtent  extent)
inline

◆ tridiagonal_eigen_acceptance()

template<uni20::LapackReal Scalar, uni20::MutableRankedStridedMdspanLike< 2 > EigenvectorMdspan>
consteval auto uni20::linalg::lapack_detail::tridiagonal_eigen_acceptance ( )

Report compile-time eligibility for resolved LAPACK tridiagonal eigensystem dispatch.

◆ try_hessenberg_schur()

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.

◆ try_linear_solve()

template<uni20::MutableRankedStridedMdspanLike< 2 > CoefficientMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RhsMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_linear_solve ( CoefficientMdspan &  coefficients,
RhsMdspan &  right_hand_sides,
SolveInfo &  info,
SolveOptions< uni20::make_real_t< typename CoefficientMdspan::value_type > > const &  options 
)

◆ try_lq()

KernelAttempt uni20::linalg::lapack_detail::try_lq ( LMdspan &  l,
QMdspan &  q,
MatrixMdspan &  matrix_work 
)

◆ try_matrix_norm()

template<class Output , uni20::RankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_matrix_norm ( matrix_norm_op const &  operation,
Output &  output,
MatrixMdspan &  matrix 
)

◆ try_nonsymmetric_eigen()

template<uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan, class EigenScalar , uni20::MutableRankedMdspanLike< 2 > RightEigenvectorMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_nonsymmetric_eigen ( nonsymmetric_eigen_op const &  op,
MatrixMdspan &  matrix_work,
std::span< EigenScalar >  eigenvalues,
RightEigenvectorMdspan &  right_eigenvectors 
)

Compute eigenvalues and optional right eigenvectors through LAPACK geev.

◆ try_qr()

KernelAttempt uni20::linalg::lapack_detail::try_qr ( QMdspan &  q,
RMdspan &  r,
MatrixMdspan &  matrix_work 
)

◆ try_schur()

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.

◆ try_schur_reorder()

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.

◆ try_self_adjoint_eigh()

template<uni20::MutableRankedStridedMdspanLike< 1 > EigenvalueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_self_adjoint_eigh ( self_adjoint_eigh_op const &  op,
EigenvalueMdspan &  eigenvalues,
MatrixMdspan &  matrix_work 
)

Compute an in-place symmetric or Hermitian eigensystem through syev or heev.

LAPACK overwrites matrix_work. When eigenvectors are requested, its columns contain normalized eigenvectors on return.

◆ try_singular_values_kernel()

template<class SingularValueMdspan , class MatrixMdspan >
KernelAttempt uni20::linalg::lapack_detail::try_singular_values_kernel ( char  jobu,
char  jobvt,
SingularValueMdspan &&  singular_values,
MatrixMdspan &&  matrix_work 
)

◆ try_size_product()

constexpr std::optional< std::size_t > uni20::linalg::lapack_detail::try_size_product ( std::size_t  left,
std::size_t  right 
)
constexprnoexcept

Multiply allocation extents without wrapping std::size_t.

◆ try_svd() [1/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( singular_values_op const &  ,
SingularValueMdspan &  singular_values,
MatrixMdspan &  matrix_work 
)

Compute exact singular values through LAPACK gesvd.

◆ try_svd() [2/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( svd_left_op const &  op,
SingularValueMdspan &  singular_values,
LeftMdspan &  left_singular_vectors,
MatrixMdspan &  matrix_work 
)

Compute singular values and left singular vectors through LAPACK gesvd.

◆ try_svd() [3/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( svd_left_op const &  op,
SingularValueMdspan &  singular_values,
MatrixMdspan &  matrix_work 
)

Compute reduced left singular vectors in the matrix input allocation.

◆ try_svd() [4/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > LeftMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( svd_op const &  op,
SingularValueMdspan &  singular_values,
LeftMdspan &  left_singular_vectors,
RightAdjointMdspan &  right_singular_vectors_adjoint,
MatrixMdspan &  matrix_work 
)

Compute an exact dense SVD through LAPACK gesvd.

matrix_work is destroyed. The returned right factor is the transpose for real scalars and the conjugate transpose for complex scalars, matching LAPACK's VT output.

◆ try_svd() [5/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > OtherFactorMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( svd_op const &  op,
SingularValueMdspan &  singular_values,
OtherFactorMdspan &  other_factor,
MatrixMdspan &  matrix_work 
)

Compute an exact dense SVD with one reduced factor overwriting the input allocation.

◆ try_svd() [6/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( svd_right_op const &  op,
SingularValueMdspan &  singular_values,
MatrixMdspan &  matrix_work 
)

Compute reduced right singular vectors in the matrix input allocation.

◆ try_svd() [7/7]

template<uni20::MutableRankedStridedMdspanLike< 1 > SingularValueMdspan, uni20::MutableRankedStridedMdspanLike< 2 > RightAdjointMdspan, uni20::MutableRankedStridedMdspanLike< 2 > MatrixMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_svd ( svd_right_op const &  op,
SingularValueMdspan &  singular_values,
RightAdjointMdspan &  right_singular_vectors_adjoint,
MatrixMdspan &  matrix_work 
)

Compute singular values and right singular vectors through LAPACK gesvd.

◆ try_tridiagonal_eigen()

template<class Scalar , uni20::MutableRankedStridedMdspanLike< 2 > EigenvectorMdspan>
KernelAttempt uni20::linalg::lapack_detail::try_tridiagonal_eigen ( symmetric_tridiagonal_eigen_op const &  op,
std::span< Scalar >  diagonal,
std::span< Scalar >  subdiagonal,
EigenvectorMdspan &  eigenvectors 
)

Compute a real symmetric tridiagonal eigensystem through sterf or steqr.

◆ with_host_write_mdspans()

template<class Function , uni20::HostWritableMdspec... Mdspecs>
requires std::same_as<std::invoke_result_t<Function&&, uni20::host_write_mdspan_t<Mdspecs>&...>, KernelAttempt>
KernelAttempt uni20::linalg::lapack_detail::with_host_write_mdspans ( Function &&  function,
Mdspecs &...  mdspecs 
)

Invoke a LAPACK attempt with host-writable mdspans under simultaneous leases.

◆ workspace_size()

template<class Scalar >
blas_int uni20::linalg::lapack_detail::workspace_size ( Scalar const &  query)

Convert a provider workspace query result to the configured LAPACK integer type.