Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Namespaces | Classes | Concepts | Typedefs | Enumerations | Functions
uni20::krylov Namespace Reference

Namespaces

namespace  gmres_detail
 

Classes

struct  ArnoldiFactorization
 Arnoldi factorization for a nonsymmetric matrix-free operator. More...
 
struct  ArnoldiRitzExtraction
 Ritz data extracted from a real Arnoldi Hessenberg projection. More...
 
class  BlockTensorMatrixFreeOps
 Combine fixed BlockTensor vector algebra with an owned matrix-free apply operation. More...
 
class  BlockTensorVectorOps
 Krylov vector algebra for one exact owning BlockTensor structure. More...
 
struct  ComplexHermitianEigensystem
 Eigenvalues and optional eigenvectors of a dense complex Hermitian matrix. More...
 
struct  ComplexNonsymmetricEigensystem
 Generalized real Schur decomposition of a dense real matrix pencil. More...
 
struct  ComplexSchurCompressedArnoldiFactorization
 Compressed complex Arnoldi relation after a Schur restart. More...
 
struct  ComplexSchurDecomposition
 Complex Schur decomposition stored in column-major DenseMatrix values. More...
 
struct  DenseHostVector
 Prototype host vector used by matrix-free Krylov tests and adapters. More...
 
class  DenseHostVectorAlgebra
 Dense host vector algebra without an assembled operator. More...
 
class  DenseHostVectorOps
 Dense reference operator combined with host vector algebra for prototypes. More...
 
struct  DenseHostVectorTransfer
 Explicit precision conversion between dense prototype vector spaces. More...
 
struct  EigenResult
 Matrix-free eigenvalue result with solver-owned vector objects. More...
 
struct  GmresErrorEstimates
 Error estimates evaluated from the residual and supplied operator data. More...
 
struct  GmresInfo
 Recoverable solve outcome; counters include attempted operator calls. More...
 
struct  GmresOperatorEstimate
 An application-supplied estimate or known upper bound. More...
 
struct  GmresOperatorEstimates
 Optional properties of the original operator in the vector space's 2-norm. More...
 
struct  GmresOptions
 Residual stopping policy and storage/iteration limits. More...
 
struct  GmresRefinementContext
 Bind precision roles and application operations for GMRES refinement. More...
 
struct  GmresRefinementInfo
 Refinement diagnostics for the last finite published working iterate. More...
 
struct  GmresRefinementOptions
 Outer residual targets and independently configured inner solves. More...
 
struct  GmresResidual
 Recomputed Euclidean norms for the published iterate. More...
 
struct  IdentityPreconditioner
 Identity preconditioner using the supplied vector copy operation. More...
 
struct  KrylovExponentialDiagnostics
 Optional diagnostic state for Krylov exponential actions. More...
 
struct  KrylovExponentialParams
 Parameters for Krylov exponential actions. More...
 
struct  KrylovExponentialResult
 Matrix-free approximation to exp(t A) v. More...
 
struct  KrylovVectorSpace
 An opaque vector space with one explicit arithmetic precision. More...
 
struct  NonsymmetricArnoldiDiagnostics
 Optional diagnostic state for nonsymmetric Arnoldi solves. More...
 
struct  NonsymmetricEigenParams
 Parameters for a native nonsymmetric eigenvalue solve. More...
 
struct  NonsymmetricEigenResult
 Matrix-free nonsymmetric eigenvalue result. More...
 
struct  RealBidiagonalReduction
 Compact Householder bidiagonal reduction of a dense real matrix. More...
 
struct  RealBidiagonalSvd
 Singular value decomposition of a real bidiagonal matrix. More...
 
struct  RealCompactLqFactorization
 Compact Householder LQ factorization of a dense real matrix. More...
 
struct  RealCompactQlFactorization
 Compact Householder QL factorization of a dense real matrix. More...
 
struct  RealCompactQrFactorization
 Compact Householder QR factorization of a dense real matrix. More...
 
struct  RealCompactRqFactorization
 Compact Householder RQ factorization of a dense real matrix. More...
 
struct  RealEquilibration
 Dense real general matrix equilibration factors. More...
 
struct  RealExpertLinearSolve
 Expert dense real linear solve result. More...
 
struct  RealGeneralBandExpertLinearSolve
 Expert real general-band linear solve result. More...
 
struct  RealGeneralBandFactorization
 LU factorization of a real square general band matrix. More...
 
struct  RealGeneralBandMatrix
 LAPACK general band storage for a real square matrix. More...
 
struct  RealGeneralizedHessenbergReduction
 Generalized Hessenberg reduction of a dense real matrix pencil. More...
 
struct  RealGeneralizedNonsymmetricBalance
 Balanced dense real nonsymmetric matrix pencil and LAPACK scaling metadata. More...
 
struct  RealGeneralizedNonsymmetricEigensystem
 Eigenvalues and optional right eigenvectors of a real nonsymmetric matrix pencil. More...
 
struct  RealGeneralizedNonsymmetricExpertEigensystem
 Expert eigensystem diagnostics for a dense real nonsymmetric matrix pencil. More...
 
struct  RealGeneralizedSchurConditionEstimates
 Reciprocal condition estimates for eigenpairs of a generalized real Schur form. More...
 
struct  RealGeneralizedSchurDecomposition
 One diagonal block of a real Schur form. More...
 
struct  RealGeneralizedSchurRightEigenvectors
 Right eigenvectors of a generalized real Schur form unpacked into complex columns. More...
 
struct  RealGeneralizedSchurSelectedSubspace
 Selected generalized real Schur subspace with LAPACK tgsen diagnostics. More...
 
struct  RealGeneralTridiagonalExpertLinearSolve
 Expert real general-tridiagonal linear solve result. More...
 
struct  RealGeneralTridiagonalFactorization
 LU factorization of a real square general tridiagonal matrix. More...
 
struct  RealGeneralTridiagonalMatrix
 LAPACK general tridiagonal storage for a real square matrix. More...
 
struct  RealHessenbergReduction
 Compact real Hessenberg reduction of a dense square matrix. More...
 
struct  RealLqFactorization
 Reduced LQ factorization of a dense real matrix. More...
 
struct  RealLuFactorization
 LU factorization of a dense real square matrix. More...
 
struct  RealNonsymmetricBalance
 Balanced dense real nonsymmetric matrix and LAPACK scaling metadata. More...
 
struct  RealNonsymmetricEigensystem
 Eigenvalues and optional eigenvectors of a dense real symmetric matrix. More...
 
struct  RealNonsymmetricExpertEigensystem
 Eigenvalues and optional right eigenvectors of a real nonsymmetric matrix. More...
 
struct  RealPivotedCholeskyFactorization
 Pivoted Cholesky factorization of a dense real positive semidefinite matrix. More...
 
struct  RealPivotedQrFactorization
 Reduced QR factorization with column pivoting of a dense real matrix. More...
 
struct  RealQlFactorization
 Reduced QL factorization of a dense real matrix. More...
 
struct  RealQrFactorization
 Reduced QR factorization of a dense real matrix. More...
 
struct  RealRankRevealingLeastSquares
 Rank-revealing dense real least-squares result. More...
 
struct  RealRefinedLinearSolve
 Dense real refined linear solve result. More...
 
struct  RealRqFactorization
 Reduced RQ factorization of a dense real matrix. More...
 
struct  RealSchurBlock
 Expert eigensystem diagnostics for a dense real nonsymmetric matrix. More...
 
struct  RealSchurCompressedArnoldiFactorization
 Compressed real Arnoldi relation after a Schur restart. More...
 
struct  RealSchurConditionEstimates
 Reciprocal condition estimates for eigenpairs of a real Schur form. More...
 
struct  RealSchurDecomposition
 
struct  RealSchurRestartSelection
 Block-aware selection result for real Schur restart. More...
 
struct  RealSchurRightEigenvectors
 Right eigenvectors of a real Schur form unpacked into complex columns. More...
 
struct  RealSchurSelectedSubspace
 Eigenvalues and optional right eigenvectors of a complex nonsymmetric matrix. More...
 
struct  RealSingularValueDecomposition
 Singular values and optional singular vectors of a dense real matrix. More...
 
struct  RealSvdLeastSquares
 SVD-based dense real least-squares result. More...
 
struct  RealSylvesterSolution
 Dense real Sylvester equation result. More...
 
struct  RealSymmetricEigensystem
 
struct  RealSymmetricIndefiniteExpertLinearSolve
 Expert dense real symmetric-indefinite linear solve result. More...
 
struct  RealSymmetricIndefiniteFactorization
 Bunch-Kaufman factorization of a dense real symmetric-indefinite matrix. More...
 
struct  RealSymmetricPositiveDefiniteBandExpertLinearSolve
 Expert real SPD band linear solve result. More...
 
struct  RealSymmetricPositiveDefiniteBandFactorization
 Cholesky factorization of a real SPD band matrix. More...
 
struct  RealSymmetricPositiveDefiniteBandMatrix
 LAPACK symmetric positive-definite band storage for a real square matrix. More...
 
struct  RealSymmetricPositiveDefiniteEquilibration
 Dense real SPD equilibration factors. More...
 
struct  RealSymmetricPositiveDefiniteExpertLinearSolve
 Expert dense real SPD linear solve result. More...
 
struct  RealSymmetricPositiveDefiniteFactorization
 Cholesky factorization of a dense real SPD matrix. More...
 
struct  RealSymmetricPositiveDefiniteTridiagonalExpertLinearSolve
 Expert real SPD tridiagonal linear solve result. More...
 
struct  RealSymmetricPositiveDefiniteTridiagonalFactorization
 Cholesky factorization of a real SPD tridiagonal matrix. More...
 
struct  RealSymmetricPositiveDefiniteTridiagonalMatrix
 Real symmetric positive-definite tridiagonal matrix storage. More...
 
struct  RealSymmetricTridiagonalReduction
 Compact real symmetric tridiagonal reduction of a dense symmetric matrix. More...
 
struct  RightComplexSchurDecomposition
 Complex Schur decomposition stored in prototype layout-right matrices. More...
 
struct  RightRealSchurDecomposition
 Real Schur decomposition stored in prototype layout-right matrices. More...
 
class  symmetric_tridiagonal_matrix
 Fixed-size owning real symmetric tridiagonal matrix. More...
 
struct  symmetric_tridiagonal_view
 Non-owning read-only view of a real symmetric tridiagonal matrix. More...
 
struct  SymmetricCompressedLanczosFactorization
 Compressed symmetric Lanczos factorization after implicit restart. More...
 
struct  SymmetricEigenParams
 Common parameters for a symmetric or Hermitian eigenvalue solve. More...
 
struct  SymmetricLanczosDiagnostics
 Optional diagnostic state for symmetric Lanczos solves. More...
 
struct  SymmetricQrShiftResult
 Result of applying implicit QR shifts to a symmetric tridiagonal projection. More...
 
struct  SymmetricRestartCycleDiagnostics
 Diagnostic state for one symmetric Lanczos restart cycle. More...
 
struct  SymmetricRestartPlan
 Restart dimensions after implicit-restart edge-case adjustment. More...
 
struct  SymmetricRestartSelection
 Ritz-value selection state used by symmetric implicit restart logic. More...
 
struct  SymmetricTransformOptions
 Native symmetric transform options for mapping OP Ritz values. More...
 
struct  TaylorExponentialDiagnostics
 Diagnostic state for Taylor exponential actions. More...
 
struct  TaylorExponentialParams
 Parameters for conservative Taylor scaling exponential actions. More...
 
struct  TaylorExponentialResult
 Result for validation-oriented Taylor exponential actions. More...
 
struct  TridiagonalEigensystem
 Eigenvalues and optional eigenvectors of a symmetric tridiagonal matrix. More...
 

Concepts

concept  KrylovPreconditioner
 Fixed linear inverse-preconditioner application, output <- M^{-1} input.
 
concept  KrylovVectorOps
 Concept for opaque vector-space operations required by Krylov solvers.
 
concept  KrylovOperator
 Concept for an output-first Krylov operator application y <- OP*x.
 
concept  KrylovMatrixFreeOperator
 Composite concept for current adapters that own vector ops and OP*x.
 
concept  MatrixFreeVectorOps
 Backward-compatible name for the combined vector/operator concept.
 
concept  KrylovMetricInnerProduct
 Optional customization point for backend-owned metric inner products.
 
concept  MetricInnerProductOps
 Backward-compatible name for direct metric inner-product customization.
 
concept  KrylovNorm
 Optional customization point for direct vector norms.
 

Typedefs

using MatrixFill = uni20::linalg::MatrixRegion
 Matrix region selected by LAPACK-style copy and set operations.
 
template<typename Scalar >
using RightMatrix = uni20::DenseMatrix< Scalar, uni20::RowMajor >
 Owning row-major dense matrix retained for layout-specific Krylov helpers.
 
using SymmetricSpectralTransform = SymmetricTransformKind
 Backward-compatible name for symmetric transform kinds.
 
template<uni20::Real Scalar>
using SymmetricSpectralTransformOptions = SymmetricTransformOptions< Scalar >
 Backward-compatible name for symmetric transform options.
 

Enumerations

enum class  GmresEstimateKind { estimate , upper_bound }
 Provenance of a supplied operator quantity, not of a computed error. More...
 
enum class  GmresRefinementStatus {
  converged , iteration_limit , stagnated , inner_failed ,
  nonfinite_input , nonfinite_result
}
 Outer termination, distinct from convergence of an inner correction. More...
 
enum class  GmresStatus {
  converged , iteration_limit , stagnated , breakdown ,
  nonfinite_input , nonfinite_result
}
 Numerical termination of a matrix-free linear solve. More...
 
enum class  KrylovDiagnosticsLevel { None , Summary , Full }
 Amount of solver-internal diagnostic state to retain. More...
 
enum class  MatrixNorm { MaxAbs , One , Infinity , Frobenius }
 LAPACK-compatible dense matrix norm selector. More...
 
enum class  MatrixSide { Left , Right }
 Matrix side selected by LAPACK-style multiply and solve operations. More...
 
enum class  MatrixTranspose { None , Transpose , ConjugateTranspose }
 Matrix transpose mode for local dense Krylov operations. More...
 
enum class  NonsymmetricStatus {
  Converged , NotConverged , ComplexPairEncountered , ComplexPromotionRecommended ,
  RealSchurPairRequired , AmbiguousReality , Breakdown , InvalidInput
}
 Native nonsymmetric solver status. More...
 
enum class  RealNonsymmetricBalanceJob { None , Permute , Scale , Both }
 LAPACK balancing operations for a dense real nonsymmetric matrix. More...
 
enum class  RealNonsymmetricPolicy { RequireRealEigenpairs , AllowRealSchurPairs , PromoteToComplexSuggested }
 Policy for real nonsymmetric solves when wanted Ritz values may be complex. More...
 
enum class  RitzReality { Real , Ambiguous , Complex }
 Numerical reality classification for a complex Ritz value from a real Arnoldi solve. More...
 
enum class  SpectrumPart {
  LargestMagnitude , SmallestMagnitude , LargestAlgebraic , SmallestAlgebraic ,
  BothEnds , LargestReal , SmallestReal , LargestImaginary ,
  SmallestImaginary
}
 Spectrum selector for matrix-free eigenvalue solvers. More...
 
enum class  SymmetricTransformKind {
  Regular , GeneralizedInverse , ShiftInvert , Buckling ,
  Cayley
}
 Transform represented by the caller-supplied symmetric Krylov operator. More...
 

Functions

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_bidiagonal_left_factor (RealBidiagonalReduction< Scalar > const &reduction, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Left, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the left orthogonal factor Q from a real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_bidiagonal_right_factor (RealBidiagonalReduction< Scalar > const &reduction, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Right, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the right orthogonal factor P from a real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_hessenberg_orthogonal_factor (RealHessenbergReduction< Scalar > const &reduction, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Left, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the orthogonal factor from a compact real Hessenberg reduction.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_lq_factor (RealCompactLqFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Right, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the orthogonal factor from a compact real LQ factorization.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_ql_factor (RealCompactQlFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Left, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the orthogonal factor from a compact real QL factorization.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_qr_factor (RealCompactQrFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Left, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the orthogonal factor from a compact real QR factorization.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_rq_factor (RealCompactRqFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Right, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the orthogonal factor from a compact real RQ factorization.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > apply_real_symmetric_tridiagonal_orthogonal_factor (RealSymmetricTridiagonalReduction< Scalar > const &reduction, detail::ColumnMajorLapackMatrix< Scalar > target, MatrixSide side=MatrixSide::Left, MatrixTranspose transpose=MatrixTranspose::None)
 Apply the orthogonal factor from a compact real symmetric tridiagonal reduction.
 
template<uni20::Real Scalar>
SymmetricQrShiftResult< Scalar > apply_symmetric_qr_shifts (std::vector< Scalar > diagonal, std::vector< Scalar > subdiagonal, std::vector< Scalar > const &shifts)
 Apply implicit shifted QR sweeps to a symmetric tridiagonal matrix.
 
template<uni20::RealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
ArnoldiFactorization< Scalar, Vector > arnoldi_factorize (Ops &ops, Vector const &initial, int max_steps, uni20::make_real_t< Scalar > breakdown_tolerance=uni20::make_real_t< Scalar >{})
 Build a full-reorthogonalized Arnoldi factorization.
 
template<uni20::RealOrComplex Scalar, typename Vector >
uni20::DenseMatrix< Scalar > arnoldi_projected_hessenberg (ArnoldiFactorization< Scalar, Vector > const &factorization)
 Copy the square projected Hessenberg block from an Arnoldi factorization.
 
template<typename Scalar >
void axpy (std::span< Scalar > y, Scalar const &alpha, std::span< Scalar const > x)
 Add a scaled local dense vector to another vector.
 
template<class Tensor , class Operator >
 BlockTensorMatrixFreeOps (Tensor const &, Operator) -> BlockTensorMatrixFreeOps< std::remove_cvref_t< Tensor >, Operator >
 
template<uni20::Complex C>
RitzReality classify_ritz_reality (C theta, uni20::make_real_t< C > tolerance=uni20::make_real_t< C >{}, uni20::make_real_t< C > scale=uni20::make_real_t< C >{1}, uni20::make_real_t< C > ambiguity_factor=uni20::make_real_t< C >{10})
 Classify whether a complex Ritz value is numerically real.
 
template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > complex_generalized_hermitian_eigensystem (detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > matrix, detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > metric, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense type-1 generalized complex Hermitian eigensystem through LAPACK hegv.
 
template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > complex_generalized_hermitian_eigensystem_divide_and_conquer (detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > matrix, detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > metric, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense type-1 generalized complex Hermitian eigensystem through LAPACK hegvd.
 
template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > complex_generalized_hermitian_eigensystem_index_range (detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > matrix, detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > metric, std::size_t first_index, std::size_t last_index, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a selected dense type-1 generalized complex Hermitian eigensystem through LAPACK hegvx.
 
template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > complex_hermitian_eigensystem (detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > matrix, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense complex Hermitian eigensystem through LAPACK heev.
 
template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > complex_hermitian_eigensystem_divide_and_conquer (detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > matrix, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense complex Hermitian eigensystem through LAPACK heevd.
 
template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > complex_hermitian_eigensystem_index_range (detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > > matrix, std::size_t first_index, std::size_t last_index, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a selected dense complex Hermitian eigensystem through LAPACK heevr.
 
template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
NonsymmetricEigenResult< Real, Vector > complex_nonsymmetric_arnoldi_standard (Ops &ops, Vector const &initial, NonsymmetricEigenParams< Real > const &params)
 Run a restarted complex nonsymmetric Arnoldi solver.
 
template<uni20::LapackReal Real>
ComplexNonsymmetricEigensystem< Real > complex_nonsymmetric_eigensystem (uni20::DenseMatrix< uni20::detail::standard_complex< Real > > matrix, bool compute_right_vectors)
 Solve a dense real nonsymmetric eigensystem through LAPACK geevx.
 
template<uni20::LapackReal Real>
ComplexSchurDecomposition< Real > complex_schur (uni20::DenseMatrix< uni20::detail::standard_complex< Real > > matrix, bool compute_vectors)
 Compute the complex Schur decomposition of a column-major DenseMatrix.
 
template<uni20::LapackReal Real>
RightComplexSchurDecomposition< Real > complex_schur_layout_right (RightMatrix< uni20::detail::standard_complex< Real > > matrix, bool compute_vectors)
 Compute the complex Schur decomposition of a layout-right matrix through LAPACK gees.
 
template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
ComplexSchurCompressedArnoldiFactorization< Real, Vector > compress_complex_schur_arnoldi_restart (Ops &ops, ArnoldiFactorization< uni20::complex< Real >, Vector > const &factorization, NonsymmetricEigenParams< Real > const &params)
 Compress a complex Arnoldi factorization through complex Schur reordering.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
RealSchurCompressedArnoldiFactorization< Scalar, Vector > compress_real_schur_arnoldi_restart (Ops &ops, ArnoldiFactorization< Scalar, Vector > const &factorization, NonsymmetricEigenParams< Scalar > const &params)
 Compress an Arnoldi factorization through real Schur block reordering.
 
template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
SymmetricCompressedLanczosFactorization< uni20::make_real_t< Scalar >, Vector > compress_symmetric_lanczos_restart (Ops &ops, std::vector< Vector > const &basis, Vector const &residual, SymmetricQrShiftResult< uni20::make_real_t< Scalar > > const &shifted, std::size_t retained_count)
 Compress a Lanczos factorization with the accumulated restart transform.
 
template<typename Scalar >
void copy (std::span< Scalar > destination, std::span< Scalar const > source)
 Copy a local dense vector.
 
template<typename Scalar >
RightMatrix< Scalar > copy_left_to_right (uni20::DenseMatrix< Scalar > const &matrix)
 Copy a column-major DenseMatrix into a row-major matrix.
 
template<typename Scalar >
uni20::DenseMatrix< Scalar > copy_right_to_left (RightMatrix< Scalar > const &matrix)
 Copy a row-major matrix into a column-major DenseMatrix.
 
int default_adaptive_exponential_krylov_dimension (std::size_t problem_dimension)
 Return the default adaptive Krylov projection cap for exponential actions.
 
template<uni20::Real Scalar>
requires requires { uni20::numeric_limits<Scalar>::epsilon(); }
Scalar default_complex_pair_tolerance ()
 Default imaginary-part tolerance for deciding whether a real Arnoldi Ritz value is real.
 
template<uni20::Real Scalar>
Scalar default_complex_pair_tolerance (Scalar const &exemplar)
 Default reality tolerance using the exemplar's working precision.
 
int default_exponential_krylov_dimension (std::size_t problem_dimension)
 Return the default Krylov projection dimension for exponential actions.
 
int default_nonsymmetric_krylov_dimension (int eigenvalue_count, std::size_t problem_dimension)
 Return the default nonsymmetric Arnoldi subspace dimension.
 
int default_nonsymmetric_retained_ritz_count (int eigenvalue_count, int krylov_dimension)
 Return the default nonsymmetric retained Schur dimension.
 
int default_symmetric_krylov_dimension (int eigenvalue_count, std::size_t problem_dimension)
 Return the default symmetric/Hermitian Krylov subspace dimension.
 
int default_symmetric_retained_ritz_count (int eigenvalue_count, int krylov_dimension)
 Return the default symmetric/Hermitian retained Ritz count.
 
template<uni20::Real Scalar>
Scalar dot (std::span< Scalar const > x, std::span< Scalar const > y)
 Compute a BLAS-style real dot product.
 
template<typename Scalar >
Scalar dotc (std::span< Scalar const > x, std::span< Scalar const > y)
 Compute a conjugated dot product.
 
template<typename Scalar >
Scalar dotu (std::span< Scalar const > x, std::span< Scalar const > y)
 Compute an unconjugated dot product.
 
template<uni20::Real Scalar>
int effective_exponential_krylov_dimension (KrylovExponentialParams< Scalar > const &params, std::size_t problem_dimension)
 Return the effective Krylov projection dimension for exponential actions.
 
template<uni20::Real Scalar>
int effective_nonsymmetric_krylov_dimension (NonsymmetricEigenParams< Scalar > const &params, std::size_t problem_dimension)
 Return the effective nonsymmetric Arnoldi subspace dimension.
 
template<uni20::Real Scalar>
int effective_nonsymmetric_retained_ritz_count (NonsymmetricEigenParams< Scalar > const &params, int krylov_dimension)
 Return the effective nonsymmetric retained Ritz or Schur count.
 
template<uni20::Real Scalar>
int effective_symmetric_krylov_dimension (SymmetricEigenParams< Scalar > const &params, std::size_t problem_dimension)
 Return the effective symmetric/Hermitian Krylov subspace dimension.
 
template<uni20::Real Scalar>
int effective_symmetric_retained_ritz_count (SymmetricEigenParams< Scalar > const &params, int krylov_dimension)
 Return the effective symmetric/Hermitian retained Ritz count.
 
template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
ArnoldiFactorization< uni20::complex< Real >, Vector > expand_complex_schur_arnoldi_restart (Ops &ops, ComplexSchurCompressedArnoldiFactorization< Real, Vector > const &compressed, std::size_t target_step_count, Real breakdown_tolerance=Real{})
 Expand a compressed complex Schur Arnoldi relation back to a requested dimension.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
ArnoldiFactorization< Scalar, Vector > expand_real_schur_arnoldi_restart (Ops &ops, RealSchurCompressedArnoldiFactorization< Scalar, Vector > const &compressed, std::size_t target_step_count, Scalar breakdown_tolerance=Scalar{})
 Expand a compressed real Schur Arnoldi relation back to a requested dimension.
 
template<uni20::Real Scalar>
bool exponential_adaptive_acceptance_enabled (KrylovExponentialParams< Scalar > const &params)
 
template<uni20::LapackReal Scalar, typename Vector >
ArnoldiRitzExtraction< Scalar > extract_arnoldi_ritz (ArnoldiFactorization< Scalar, Vector > const &factorization, Scalar complex_pair_tolerance=Scalar{}, Scalar scale=Scalar{1})
 Extract projected Ritz values and residual estimates from a real Arnoldi factorization.
 
template<uni20::LapackComplex Complex, typename Vector >
ArnoldiRitzExtraction< uni20::make_real_t< Complex > > extract_complex_arnoldi_ritz (ArnoldiFactorization< Complex, Vector > const &factorization, uni20::make_real_t< Complex > complex_pair_tolerance=uni20::make_real_t< Complex >{}, uni20::make_real_t< Complex > scale=uni20::make_real_t< Complex >{1})
 Extract projected Ritz values from a complex Arnoldi factorization.
 
template<typename Scalar >
void gemv (std::span< Scalar > y, Scalar const &alpha, uni20::DenseMatrix< Scalar > const &matrix, std::span< Scalar const > x, Scalar const &beta, MatrixTranspose transpose=MatrixTranspose::None)
 Compute a dense matrix-vector product.
 
template<typename Scalar >
void gerc (uni20::DenseMatrix< Scalar > &matrix, Scalar const &alpha, std::span< Scalar const > x, std::span< Scalar const > y)
 Apply a conjugated dense rank-one update.
 
template<typename Scalar >
void geru (uni20::DenseMatrix< Scalar > &matrix, Scalar const &alpha, std::span< Scalar const > x, std::span< Scalar const > y)
 Apply a dense rank-one update.
 
template<class WSpace , class ISpace , class RSpace , class IOp , class ROp , class P , class Transfer >
auto gmres_refine_with_info (GmresRefinementContext< WSpace, ISpace, RSpace, IOp, ROp, P, Transfer > &context, typename WSpace::vector_type &x, typename RSpace::vector_type const &b, GmresRefinementOptions< typename ISpace::real_type, typename RSpace::real_type > const &options={})
 Refine a supplied iterate using matrix-free GMRES correction solves.
 
template<RealOrComplex S, class Ops , class Op , class P , class V >
requires KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> && KrylovPreconditioner<P, V>
GmresInfo< make_real_t< S > > gmres_with_info (Ops &ops, Op &op, P &preconditioner, V &x, V const &b, GmresOptions< make_real_t< S > > const &options, Precision precision)
 Solve A*x=b with restarted GMRES and a fixed right preconditioner.
 
template<RealOrComplex S, class Ops , class Op , class P , class V >
requires (!has_runtime_precision_v<S>) && KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> && KrylovPreconditioner<P, V>
auto gmres_with_info (Ops &ops, Op &op, P &preconditioner, V &x, V const &b, GmresOptions< make_real_t< S > > const &options={})
 Fixed-scalar GMRES using the scalar's native precision.
 
template<RealOrComplex S, class Ops , class Op , class V >
requires KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V>
auto gmres_with_info (Ops &ops, Op &op, V &x, V const &b, GmresOptions< make_real_t< S > > const &options, Precision p)
 GMRES without preconditioning, at explicit scalar precision.
 
template<RealOrComplex S, class Ops , class Op , class V >
requires (!has_runtime_precision_v<S>) && KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V>
auto gmres_with_info (Ops &ops, Op &op, V &x, V const &b, GmresOptions< make_real_t< S > > const &options={})
 Fixed-scalar GMRES without preconditioning.
 
template<uni20::LapackScalar Scalar, typename TimeScalar , typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
requires (std::constructible_from<uni20::make_real_t<Scalar>, TimeScalar> || (uni20::Complex<Scalar> && std::constructible_from<Scalar, TimeScalar>))
KrylovExponentialResult< Scalar, Vector > hermitian_krylov_exponential_action (Ops &ops, Vector const &initial, TimeScalar time, KrylovExponentialParams< uni20::make_real_t< Scalar > > const &params={})
 Approximate exp(t A) v for a Hermitian matrix-free operator.
 
template<RealOrComplex S, class Ops , class V >
requires (!has_runtime_precision_v<S>) && requires(Ops& ops, V&& source) { ops.prototype_view(std::forward<V>(source)); }
auto krylov_space (Ops &ops, V &&source)
 Bind fixed-scalar vector operations at native precision.
 
template<RealOrComplex S, class Ops , class V >
requires requires(Ops& ops, V&& source) { ops.prototype_view(std::forward<V>(source)); }
auto krylov_space (Ops &ops, V &&source, Precision p)
 Bind vector operations and an allocation prototype to finite precision.
 
template<typename Scalar >
void lacpy (uni20::DenseMatrix< Scalar > &destination, uni20::DenseMatrix< Scalar > const &source, MatrixFill fill)
 Copy a selected region of a local dense matrix.
 
template<typename Scalar >
void laset (uni20::DenseMatrix< Scalar > &matrix, Scalar const &diagonal, Scalar const &off_diagonal, MatrixFill fill)
 Set a selected region of a local dense matrix.
 
template<uni20::Real Scalar>
Scalar map_symmetric_transformed_eigenvalue (Scalar transformed_value, SymmetricSpectralTransformOptions< Scalar > const &options)
 Map a native symmetric transformed Ritz value back to the original eigenvalue scale.
 
template<typename Scalar , typename Vector , typename MetricOps , typename BOps , typename InnerOps >
Scalar metric_inner_product_or_apply (MetricOps &metric_ops, BOps &b_ops, InnerOps &inner_ops, Vector const &x, Vector const &y, Vector &scratch)
 Evaluate a metric inner product, using a backend override when available.
 
template<uni20::LapackScalar Scalar, typename TimeScalar , typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
requires (std::constructible_from<uni20::make_real_t<Scalar>, TimeScalar> || (uni20::Complex<Scalar> && std::constructible_from<Scalar, TimeScalar>))
KrylovExponentialResult< Scalar, Vector > nonsymmetric_krylov_exponential_action (Ops &ops, Vector const &initial, TimeScalar time, KrylovExponentialParams< uni20::make_real_t< Scalar > > const &params={})
 Approximate exp(t A) v for a nonsymmetric matrix-free operator.
 
template<typename Scalar , typename Vector , typename Ops >
uni20::make_real_t< Scalar > norm_or_inner_product (Ops &ops, Vector const &x)
 Evaluate a vector norm, using a backend override when available.
 
template<uni20::Real Scalar>
SymmetricRestartPlan< Scalar > plan_symmetric_restart (SymmetricEigenParams< Scalar > const &params, std::vector< Scalar > const &values, std::vector< Scalar > const &residual_bounds, int converged_count)
 Adjust restart dimensions for implicit-restart edge cases.
 
template<uni20::RealOrComplex Scalar>
uni20::make_real_t< Scalar > projected_departure_from_normality (uni20::DenseMatrix< Scalar > const &matrix)
 Measure departure from normality of a projected matrix.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_bidiagonal_left_orthogonal_factor (RealBidiagonalReduction< Scalar > const &reduction)
 Materialize the left orthogonal factor Q from a real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
RealBidiagonalReduction< Scalar > real_bidiagonal_reduction (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Reduce a dense real matrix to bidiagonal form through LAPACK gebrd.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_bidiagonal_right_orthogonal_factor_transpose (RealBidiagonalReduction< Scalar > const &reduction)
 Materialize the right transposed factor P^T from a real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
std::vector< Scalar > real_bidiagonal_singular_values (RealBidiagonalReduction< Scalar > const &reduction)
 Compute singular values from a compact real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
std::vector< Scalar > real_bidiagonal_singular_values (std::vector< Scalar > diagonal, std::vector< Scalar > offdiagonal, bool upper=true)
 Compute singular values of a real bidiagonal matrix through LAPACK bdsqr.
 
template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > real_bidiagonal_svd (RealBidiagonalReduction< Scalar > const &reduction, bool compute_vectors)
 Compute the SVD from a compact real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > real_bidiagonal_svd (std::vector< Scalar > diagonal, std::vector< Scalar > offdiagonal, bool compute_vectors, bool upper=true)
 Compute the SVD of a real bidiagonal matrix through LAPACK bdsdc.
 
template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > real_bidiagonal_svd_index_range (RealBidiagonalReduction< Scalar > const &reduction, std::size_t first_index, std::size_t last_index, bool compute_vectors)
 Compute a selected-index SVD from a compact real bidiagonal reduction.
 
template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > real_bidiagonal_svd_index_range (std::vector< Scalar > diagonal, std::vector< Scalar > offdiagonal, std::size_t first_index, std::size_t last_index, bool compute_vectors, bool upper=true)
 Compute a selected-index SVD of a real bidiagonal matrix through LAPACK bdsvdx.
 
template<uni20::LapackReal Scalar>
RealCompactLqFactorization< Scalar > real_compact_lq_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a compact dense real LQ factorization through LAPACK gelqf.
 
template<uni20::LapackReal Scalar>
RealCompactQlFactorization< Scalar > real_compact_ql_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a compact dense real QL factorization through LAPACK geqlf.
 
template<uni20::LapackReal Scalar>
RealCompactQrFactorization< Scalar > real_compact_qr_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a compact dense real QR factorization through LAPACK geqrf.
 
template<uni20::LapackReal Scalar>
RealCompactRqFactorization< Scalar > real_compact_rq_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a compact dense real RQ factorization through LAPACK gerqf.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_dense_inverse (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Invert a dense real square matrix through LAPACK getrf and getri.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_dense_solve_linear_system (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a dense real linear system through LAPACK gesv.
 
template<uni20::LapackReal Scalar>
RealSvdLeastSquares< Scalar > real_divide_and_conquer_svd_least_squares (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, Scalar rcond=Scalar{100} *uni20::numeric_limits< Scalar >::epsilon())
 Solve a dense real divide-and-conquer SVD least-squares problem through LAPACK gelsd.
 
template<uni20::LapackReal Scalar>
RealEquilibration< Scalar > real_equilibration (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute dense real row/column equilibration factors through LAPACK geequ.
 
template<uni20::LapackReal Scalar>
RealExpertLinearSolve< Scalar > real_expert_linear_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a dense real linear system with LAPACK gesvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealEquilibration< Scalar > real_general_band_equilibration (RealGeneralBandMatrix< Scalar > band_matrix)
 Compute real general-band row/column equilibration factors through LAPACK gbequ.
 
template<uni20::LapackReal Scalar>
RealGeneralBandExpertLinearSolve< Scalar > real_general_band_expert_linear_solve (RealGeneralBandMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve a real general-band linear system with LAPACK gbsvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealGeneralBandFactorization< Scalar > real_general_band_factorization (RealGeneralBandMatrix< Scalar > matrix)
 Compute a real general-band LU factorization through LAPACK gbtrf.
 
template<uni20::LapackReal Scalar>
RealGeneralBandMatrix< Scalar > real_general_band_from_dense (detail::ColumnMajorLapackMatrix< Scalar > const &matrix, std::size_t lower_bandwidth, std::size_t upper_bandwidth)
 Pack a dense real square matrix into LAPACK general-band factor storage.
 
template<uni20::LapackReal Scalar>
Scalar real_general_band_matrix_norm (RealGeneralBandMatrix< Scalar > band_matrix, MatrixNorm norm)
 Compute a real general-band matrix norm through LAPACK langb.
 
template<uni20::LapackReal Scalar>
Scalar real_general_band_one_norm_reciprocal_condition_number (RealGeneralBandFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate a real general-band one-norm reciprocal condition number through LAPACK gbcon.
 
template<uni20::LapackReal Scalar>
Scalar real_general_band_one_norm_reciprocal_condition_number (RealGeneralBandMatrix< Scalar > matrix)
 Estimate a real general-band one-norm reciprocal condition number.
 
template<uni20::LapackReal Scalar>
RealEquilibration< Scalar > real_general_band_power_of_two_equilibration (RealGeneralBandMatrix< Scalar > band_matrix)
 Compute power-of-two real general-band equilibration factors through LAPACK gbequb.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_general_band_refined_solve (RealGeneralBandMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve and refine a real general-band system through LAPACK gbrfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_general_band_solve (RealGeneralBandFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve using an existing real general-band LU factorization through LAPACK gbtrs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_general_band_solve (RealGeneralBandMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a real general-band linear system through LAPACK gbsv.
 
template<uni20::LapackReal Scalar>
RealGeneralTridiagonalExpertLinearSolve< Scalar > real_general_tridiagonal_expert_linear_solve (RealGeneralTridiagonalMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve a real general-tridiagonal linear system with LAPACK gtsvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealGeneralTridiagonalFactorization< Scalar > real_general_tridiagonal_factorization (RealGeneralTridiagonalMatrix< Scalar > matrix)
 Compute a real general tridiagonal LU factorization through LAPACK gttrf.
 
template<uni20::LapackReal Scalar>
RealGeneralTridiagonalMatrix< Scalar > real_general_tridiagonal_from_dense (detail::ColumnMajorLapackMatrix< Scalar > const &matrix)
 Extract real general tridiagonal storage from a dense matrix.
 
template<uni20::LapackReal Scalar>
Scalar real_general_tridiagonal_one_norm (RealGeneralTridiagonalMatrix< Scalar > const &matrix)
 Compute the one-norm of a real general tridiagonal matrix.
 
template<uni20::LapackReal Scalar>
Scalar real_general_tridiagonal_one_norm_reciprocal_condition_number (RealGeneralTridiagonalFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate a real general-tridiagonal one-norm reciprocal condition number through LAPACK gtcon.
 
template<uni20::LapackReal Scalar>
Scalar real_general_tridiagonal_one_norm_reciprocal_condition_number (RealGeneralTridiagonalMatrix< Scalar > matrix)
 Estimate a real general-tridiagonal one-norm reciprocal condition number from a matrix.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_general_tridiagonal_refined_solve (RealGeneralTridiagonalMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve and refine a real general-tridiagonal linear system through LAPACK gtrfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_general_tridiagonal_solve (RealGeneralTridiagonalFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve using an existing real general tridiagonal LU factorization through LAPACK gttrs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_general_tridiagonal_solve (RealGeneralTridiagonalMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a real general tridiagonal linear system through LAPACK gtsv.
 
template<uni20::LapackReal Real>
RealGeneralizedHessenbergReduction< Real > real_generalized_hessenberg_reduction (detail::ColumnMajorLapackMatrix< Real > matrix, detail::ColumnMajorLapackMatrix< Real > upper_triangular_metric, bool compute_vectors)
 Reduce a real matrix pencil to generalized upper Hessenberg form through LAPACK gghrd.
 
template<uni20::LapackReal Real>
RealGeneralizedSchurDecomposition< Real > real_generalized_hessenberg_schur (detail::ColumnMajorLapackMatrix< Real > hessenberg, detail::ColumnMajorLapackMatrix< Real > upper_triangular_metric, bool compute_vectors)
 Compute generalized real Schur form from a generalized Hessenberg pencil through LAPACK hgeqz.
 
template<uni20::LapackReal Real>
RealGeneralizedNonsymmetricBalance< Real > real_generalized_nonsymmetric_balance (detail::ColumnMajorLapackMatrix< Real > matrix, detail::ColumnMajorLapackMatrix< Real > metric, RealNonsymmetricBalanceJob job=RealNonsymmetricBalanceJob::Both)
 Balance a dense real nonsymmetric matrix pencil through LAPACK ggbal.
 
template<uni20::LapackReal Real>
detail::ColumnMajorLapackMatrix< Real > real_generalized_nonsymmetric_balance_backtransform_right_vectors (detail::ColumnMajorLapackMatrix< Real > vectors, RealGeneralizedNonsymmetricBalance< Real > const &balance, RealNonsymmetricBalanceJob job=RealNonsymmetricBalanceJob::Both)
 Backtransform real right eigenvectors after generalized pencil balancing.
 
template<uni20::LapackReal Real>
RealGeneralizedNonsymmetricEigensystem< Real > real_generalized_nonsymmetric_eigensystem (detail::ColumnMajorLapackMatrix< Real > matrix, detail::ColumnMajorLapackMatrix< Real > metric, bool compute_right_vectors)
 Solve a dense real generalized nonsymmetric eigensystem through LAPACK ggev.
 
template<uni20::LapackReal Real>
RealGeneralizedNonsymmetricExpertEigensystem< Real > real_generalized_nonsymmetric_expert_eigensystem (detail::ColumnMajorLapackMatrix< Real > matrix, detail::ColumnMajorLapackMatrix< Real > metric, bool compute_right_vectors)
 Solve a dense real generalized nonsymmetric eigensystem through LAPACK ggevx.
 
template<uni20::LapackReal Real>
RealGeneralizedSchurDecomposition< Real > real_generalized_schur (detail::ColumnMajorLapackMatrix< Real > matrix, detail::ColumnMajorLapackMatrix< Real > metric, bool compute_vectors)
 Compute the generalized real Schur decomposition of a matrix pencil through LAPACK gges.
 
template<uni20::LapackReal Real>
RealGeneralizedSchurConditionEstimates< Real > real_generalized_schur_condition_estimates (RealGeneralizedSchurDecomposition< Real > decomposition)
 Estimate generalized Schur eigenvalue and eigenvector conditioning through LAPACK tgsna.
 
template<uni20::LapackReal Real>
RealGeneralizedSchurRightEigenvectors< Real > real_generalized_schur_right_eigenvectors (RealGeneralizedSchurDecomposition< Real > decomposition)
 Compute right eigenvectors of a generalized real Schur form through LAPACK tgevc.
 
template<uni20::LapackReal Real>
RealGeneralizedSchurSelectedSubspace< Real > real_generalized_schur_selected_subspace (RealGeneralizedSchurDecomposition< Real > decomposition, std::vector< std::size_t > const &selected_blocks)
 Move selected generalized real Schur blocks to the leading deflating subspace and estimate conditioning.
 
template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > real_generalized_symmetric_eigensystem (detail::ColumnMajorLapackMatrix< Scalar > matrix, detail::ColumnMajorLapackMatrix< Scalar > metric, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense type-1 generalized real symmetric eigensystem through LAPACK sygv.
 
template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > real_generalized_symmetric_eigensystem_divide_and_conquer (detail::ColumnMajorLapackMatrix< Scalar > matrix, detail::ColumnMajorLapackMatrix< Scalar > metric, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense type-1 generalized real symmetric eigensystem through LAPACK sygvd.
 
template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > real_generalized_symmetric_eigensystem_index_range (detail::ColumnMajorLapackMatrix< Scalar > matrix, detail::ColumnMajorLapackMatrix< Scalar > metric, std::size_t first_index, std::size_t last_index, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a selected dense type-1 generalized real symmetric eigensystem through LAPACK sygvx.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_hessenberg_orthogonal_factor (RealHessenbergReduction< Scalar > const &reduction)
 Generate the orthogonal factor from a compact real Hessenberg reduction.
 
template<uni20::LapackReal Scalar>
RealHessenbergReduction< Scalar > real_hessenberg_reduction (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Reduce a dense real square matrix to upper Hessenberg form through LAPACK gehrd.
 
template<uni20::LapackReal Scalar>
RealSchurDecomposition< Scalar > real_hessenberg_schur (uni20::DenseMatrix< Scalar > hessenberg, bool compute_vectors)
 Compute the real Schur decomposition of an upper Hessenberg matrix through LAPACK hseqr.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_least_squares (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a dense real least-squares or minimum-norm problem through LAPACK gels.
 
template<uni20::LapackReal Scalar>
RealLqFactorization< Scalar > real_lq_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a reduced dense real LQ factorization through LAPACK gelqf and orglq.
 
template<uni20::LapackReal Scalar>
RealLuFactorization< Scalar > real_lu_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a dense real LU factorization through LAPACK getrf.
 
template<uni20::LapackReal Scalar>
Scalar real_lu_one_norm_reciprocal_condition_number (RealLuFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate the one-norm reciprocal condition number from an LU factorization.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_lu_solve (RealLuFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve using an existing dense real LU factorization through LAPACK getrs.
 
template<uni20::LapackReal Scalar>
Scalar real_matrix_norm (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixNorm norm)
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
NonsymmetricEigenResult< Scalar, Vector > real_nonsymmetric_arnoldi_restarted_standard (Ops &ops, Vector const &initial, NonsymmetricEigenParams< Scalar > const &params)
 Run a restarted native real nonsymmetric Arnoldi solver.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
NonsymmetricEigenResult< Scalar, Vector > real_nonsymmetric_arnoldi_standard (Ops &ops, Vector const &initial, NonsymmetricEigenParams< Scalar > const &params)
 Run the first native non-restarted real nonsymmetric Arnoldi solver.
 
template<uni20::LapackReal Real>
RealNonsymmetricBalance< Real > real_nonsymmetric_balance (detail::ColumnMajorLapackMatrix< Real > matrix, RealNonsymmetricBalanceJob job=RealNonsymmetricBalanceJob::Both)
 Reorder a layout-right complex Schur decomposition by moving selected entries to the front.
 
template<uni20::LapackReal Real>
detail::ColumnMajorLapackMatrix< Real > real_nonsymmetric_balance_backtransform_right_vectors (detail::ColumnMajorLapackMatrix< Real > vectors, RealNonsymmetricBalance< Real > const &balance, RealNonsymmetricBalanceJob job=RealNonsymmetricBalanceJob::Both)
 Backtransform real right eigenvectors after real_nonsymmetric_balance.
 
template<uni20::LapackReal Real>
RealNonsymmetricEigensystem< Real > real_nonsymmetric_eigensystem (uni20::DenseMatrix< Real > matrix, bool compute_right_vectors)
 
template<uni20::LapackReal Real>
RealNonsymmetricExpertEigensystem< Real > real_nonsymmetric_expert_eigensystem (detail::ColumnMajorLapackMatrix< Real > matrix, bool compute_right_vectors)
 Solve a dense real nonsymmetric eigensystem through LAPACK geev.
 
template<uni20::LapackReal Scalar>
Scalar real_one_norm_reciprocal_condition_number (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Estimate the one-norm reciprocal condition number of a dense real matrix.
 
template<uni20::LapackReal Scalar>
RealPivotedCholeskyFactorization< Scalar > real_pivoted_cholesky_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix, Scalar tolerance=Scalar{-1}, MatrixFill triangle=MatrixFill::Upper)
 Compute a dense real pivoted Cholesky factorization through LAPACK pstrf.
 
template<uni20::LapackReal Scalar>
RealPivotedQrFactorization< Scalar > real_pivoted_qr_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a reduced dense real pivoted QR factorization through LAPACK geqp3.
 
template<uni20::LapackReal Scalar>
RealQlFactorization< Scalar > real_ql_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a reduced dense real QL factorization through LAPACK geqlf and orgql.
 
template<uni20::LapackReal Scalar>
RealQrFactorization< Scalar > real_qr_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a reduced dense real QR factorization through LAPACK geqrf and orgqr.
 
template<uni20::LapackReal Scalar>
RealRankRevealingLeastSquares< Scalar > real_rank_revealing_least_squares (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, Scalar rcond=Scalar{100} *uni20::numeric_limits< Scalar >::epsilon())
 Solve a dense real rank-revealing least-squares problem through LAPACK gelsy.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_refined_linear_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixTranspose transpose=MatrixTranspose::None)
 Solve and refine a dense real linear system through LAPACK gerfs.
 
template<uni20::LapackReal Scalar>
RealRqFactorization< Scalar > real_rq_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute a reduced dense real RQ factorization through LAPACK gerqf and orgrq.
 
template<uni20::LapackReal Scalar>
RealSchurDecomposition< Scalar > real_schur (uni20::DenseMatrix< Scalar > matrix, bool compute_vectors)
 Compute the real Schur decomposition of a column-major DenseMatrix.
 
template<uni20::LapackReal Scalar>
RealSchurConditionEstimates< Scalar > real_schur_condition_estimates (RealSchurDecomposition< Scalar > decomposition)
 Estimate Schur-form eigenvalue and eigenvector conditioning through LAPACK trsna.
 
template<uni20::LapackReal Scalar>
RightRealSchurDecomposition< Scalar > real_schur_layout_right (RightMatrix< Scalar > matrix, bool compute_vectors)
 Solve a real symmetric tridiagonal eigensystem through LAPACK stevd.
 
template<uni20::LapackReal Scalar>
RealSchurRightEigenvectors< Scalar > real_schur_right_eigenvectors (RealSchurDecomposition< Scalar > decomposition)
 Compute right eigenvectors of a real Schur form through LAPACK trevc.
 
template<uni20::LapackReal Scalar>
RealSchurSelectedSubspace< Scalar > real_schur_selected_subspace (RealSchurDecomposition< Scalar > decomposition, std::vector< std::size_t > const &selected_blocks)
 Compute the real Schur decomposition of a layout-right matrix through LAPACK gees.
 
template<uni20::LapackReal Scalar>
RealSingularValueDecomposition< Scalar > real_singular_value_decomposition (detail::ColumnMajorLapackMatrix< Scalar > matrix, bool compute_vectors)
 Compute a dense real singular value decomposition through LAPACK gesvd.
 
template<uni20::LapackReal Scalar>
RealSingularValueDecomposition< Scalar > real_singular_value_decomposition_divide_and_conquer (detail::ColumnMajorLapackMatrix< Scalar > matrix, bool compute_vectors)
 Compute a dense real singular value decomposition through LAPACK gesdd.
 
template<uni20::LapackReal Scalar>
RealSingularValueDecomposition< Scalar > real_singular_value_decomposition_index_range (detail::ColumnMajorLapackMatrix< Scalar > matrix, std::size_t first_index, std::size_t last_index, bool compute_vectors)
 Compute a selected-index dense real SVD through LAPACK gesvdx.
 
template<uni20::LapackReal Scalar>
RealSvdLeastSquares< Scalar > real_svd_least_squares (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, Scalar rcond=Scalar{100} *uni20::numeric_limits< Scalar >::epsilon())
 Solve a dense real SVD-based least-squares problem through LAPACK gelss.
 
template<uni20::LapackReal Scalar>
RealSylvesterSolution< Scalar > real_sylvester_solve (detail::ColumnMajorLapackMatrix< Scalar > left, detail::ColumnMajorLapackMatrix< Scalar > right, detail::ColumnMajorLapackMatrix< Scalar > rhs, int sign=1, MatrixTranspose transpose_left=MatrixTranspose::None, MatrixTranspose transpose_right=MatrixTranspose::None)
 Solve a dense real Sylvester equation through LAPACK trsyl.
 
template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > real_symmetric_eigensystem (detail::ColumnMajorLapackMatrix< Scalar > matrix, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense real symmetric eigensystem through LAPACK syev.
 
template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > real_symmetric_eigensystem_divide_and_conquer (detail::ColumnMajorLapackMatrix< Scalar > matrix, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense real symmetric eigensystem through LAPACK syevd.
 
template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > real_symmetric_eigensystem_index_range (detail::ColumnMajorLapackMatrix< Scalar > matrix, std::size_t first_index, std::size_t last_index, bool compute_vectors, MatrixFill triangle=MatrixFill::Upper)
 Solve a selected dense real symmetric eigensystem through LAPACK syevr.
 
template<uni20::LapackReal Scalar>
RealSymmetricIndefiniteExpertLinearSolve< Scalar > real_symmetric_indefinite_expert_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense real symmetric-indefinite system with LAPACK sysvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealSymmetricIndefiniteFactorization< Scalar > real_symmetric_indefinite_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Compute a dense real symmetric-indefinite Bunch-Kaufman factorization through LAPACK sytrf.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_indefinite_inverse (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Invert a dense real symmetric-indefinite matrix through LAPACK sytrf and sytri.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_indefinite_one_norm_reciprocal_condition_number (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Estimate a dense real symmetric-indefinite one-norm reciprocal condition number through LAPACK sycon.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_indefinite_one_norm_reciprocal_condition_number (RealSymmetricIndefiniteFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate a symmetric-indefinite one-norm reciprocal condition number from an existing factorization.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_symmetric_indefinite_refined_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper)
 Solve and refine a dense real symmetric-indefinite system through LAPACK syrfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_indefinite_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense real symmetric indefinite system through LAPACK sytrf and sytrs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_indefinite_solve (RealSymmetricIndefiniteFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a dense real symmetric-indefinite system from an existing Bunch-Kaufman factorization.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_matrix_norm (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixNorm norm, MatrixFill triangle=MatrixFill::Upper)
 Compute a dense real symmetric matrix norm through LAPACK lansy.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteBandExpertLinearSolve< Scalar > real_symmetric_positive_definite_band_expert_linear_solve (RealSymmetricPositiveDefiniteBandMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a real SPD band linear system with LAPACK pbsvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteBandFactorization< Scalar > real_symmetric_positive_definite_band_factorization (RealSymmetricPositiveDefiniteBandMatrix< Scalar > matrix)
 Compute a real SPD band Cholesky factorization through LAPACK pbtrf.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteBandMatrix< Scalar > real_symmetric_positive_definite_band_from_dense (detail::ColumnMajorLapackMatrix< Scalar > const &matrix, std::size_t bandwidth, MatrixFill triangle=MatrixFill::Upper)
 Pack a dense real SPD matrix into LAPACK symmetric-band storage.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_band_one_norm (RealSymmetricPositiveDefiniteBandMatrix< Scalar > const &matrix)
 Compute the one-norm of a real SPD band matrix.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_band_one_norm_reciprocal_condition_number (RealSymmetricPositiveDefiniteBandFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate a real SPD band one-norm reciprocal condition number through LAPACK pbcon.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_band_one_norm_reciprocal_condition_number (RealSymmetricPositiveDefiniteBandMatrix< Scalar > matrix)
 Estimate a real SPD band one-norm reciprocal condition number from a matrix.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_symmetric_positive_definite_band_refined_solve (RealSymmetricPositiveDefiniteBandMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve and refine a real SPD band linear system through LAPACK pbrfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_band_solve (RealSymmetricPositiveDefiniteBandFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve using an existing real SPD band Cholesky factorization through LAPACK pbtrs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_band_solve (RealSymmetricPositiveDefiniteBandMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a real SPD band system through LAPACK pbsv.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteEquilibration< Scalar > real_symmetric_positive_definite_equilibration (detail::ColumnMajorLapackMatrix< Scalar > matrix)
 Compute dense real SPD equilibration factors through LAPACK poequ.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteExpertLinearSolve< Scalar > real_symmetric_positive_definite_expert_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense real SPD linear system with LAPACK posvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteFactorization< Scalar > real_symmetric_positive_definite_factorization (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Compute a dense real SPD Cholesky factorization through LAPACK potrf.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_inverse (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Invert a dense real SPD matrix through LAPACK potrf and potri.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_one_norm_reciprocal_condition_number (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Estimate a dense real SPD one-norm reciprocal condition number through LAPACK pocon.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_one_norm_reciprocal_condition_number (RealSymmetricPositiveDefiniteFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate an SPD one-norm reciprocal condition number from an existing Cholesky factorization.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_symmetric_positive_definite_refined_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper)
 Solve and refine a dense real SPD system through LAPACK porfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper)
 Solve a dense real symmetric positive definite system through LAPACK potrf and potrs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_solve (RealSymmetricPositiveDefiniteFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a dense real SPD system from an existing Cholesky factorization.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteTridiagonalExpertLinearSolve< Scalar > real_symmetric_positive_definite_tridiagonal_expert_linear_solve (RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a real SPD tridiagonal linear system with LAPACK ptsvx diagnostics.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > real_symmetric_positive_definite_tridiagonal_factorization (RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > matrix)
 Compute a real SPD tridiagonal factorization through LAPACK pttrf.
 
template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > real_symmetric_positive_definite_tridiagonal_from_dense (detail::ColumnMajorLapackMatrix< Scalar > const &matrix)
 Extract real SPD tridiagonal storage from a dense matrix.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_tridiagonal_one_norm (RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > const &matrix)
 Compute the one-norm of a real SPD tridiagonal matrix.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_tridiagonal_one_norm_reciprocal_condition_number (RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > const &factorization, Scalar original_one_norm)
 Estimate a real SPD tridiagonal one-norm reciprocal condition number through LAPACK ptcon.
 
template<uni20::LapackReal Scalar>
Scalar real_symmetric_positive_definite_tridiagonal_one_norm_reciprocal_condition_number (RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > matrix)
 Estimate a real SPD tridiagonal one-norm reciprocal condition number from a matrix.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_symmetric_positive_definite_tridiagonal_refined_solve (RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve and refine a real SPD tridiagonal linear system through LAPACK ptrfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_tridiagonal_solve (RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > const &factorization, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve using an existing real SPD tridiagonal factorization through LAPACK pttrs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_positive_definite_tridiagonal_solve (RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides)
 Solve a real SPD tridiagonal system through LAPACK ptsv.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_symmetric_tridiagonal_orthogonal_factor (RealSymmetricTridiagonalReduction< Scalar > const &reduction)
 Generate the orthogonal factor from a compact real symmetric tridiagonal reduction.
 
template<uni20::LapackReal Scalar>
RealSymmetricTridiagonalReduction< Scalar > real_symmetric_tridiagonal_reduction (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper)
 Reduce a dense real symmetric matrix to tridiagonal form through LAPACK sytrd.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_triangular_inverse (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper, bool unit_diagonal=false)
 Invert a dense real triangular matrix through LAPACK trtri.
 
template<uni20::LapackReal Scalar>
Scalar real_triangular_matrix_norm (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixNorm norm, MatrixFill triangle=MatrixFill::Upper, bool unit_diagonal=false)
 Compute a dense real triangular or trapezoidal matrix norm through LAPACK lantr.
 
template<uni20::LapackReal Scalar>
Scalar real_triangular_one_norm_reciprocal_condition_number (detail::ColumnMajorLapackMatrix< Scalar > matrix, MatrixFill triangle=MatrixFill::Upper, bool unit_diagonal=false)
 Estimate a dense real triangular one-norm reciprocal condition number through LAPACK trcon.
 
template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > real_triangular_refined_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper, MatrixTranspose transpose=MatrixTranspose::None, bool unit_diagonal=false)
 Solve and refine a dense real triangular system through LAPACK trrfs.
 
template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > real_triangular_solve (detail::ColumnMajorLapackMatrix< Scalar > coefficients, detail::ColumnMajorLapackMatrix< Scalar > right_hand_sides, MatrixFill triangle=MatrixFill::Upper, MatrixTranspose transpose=MatrixTranspose::None, bool unit_diagonal=false)
 Solve a dense real triangular system through LAPACK trtrs.
 
template<uni20::LapackReal Real>
ComplexSchurDecomposition< Real > reorder_complex_schur (ComplexSchurDecomposition< Real > decomposition, std::vector< std::size_t > const &leading_order)
 Reorder a column-major complex Schur decomposition by moving selected entries to the front.
 
template<uni20::LapackReal Real>
RightComplexSchurDecomposition< Real > reorder_complex_schur_layout_right (RightComplexSchurDecomposition< Real > decomposition, std::vector< std::size_t > const &leading_order)
 Move selected real Schur blocks to the leading invariant subspace and estimate conditioning.
 
template<uni20::LapackReal Real>
RealGeneralizedSchurDecomposition< Real > reorder_real_generalized_schur (RealGeneralizedSchurDecomposition< Real > decomposition, std::vector< std::size_t > const &leading_block_order)
 Reorder a generalized real Schur decomposition by moving selected blocks to the front.
 
template<uni20::LapackReal Scalar>
RealSchurDecomposition< Scalar > reorder_real_schur (RealSchurDecomposition< Scalar > decomposition, std::vector< std::size_t > const &leading_block_order)
 Reorder a column-major real Schur decomposition by moving selected blocks to the front.
 
template<uni20::LapackReal Scalar>
RightRealSchurDecomposition< Scalar > reorder_real_schur_layout_right (RightRealSchurDecomposition< Scalar > decomposition, std::vector< std::size_t > const &leading_block_order)
 Reorder a layout-right real Schur decomposition by moving selected blocks to the front.
 
template<typename Scalar >
auto right_mdspan (RightMatrix< Scalar > &matrix)
 Return a mutable layout-right mdspan view of a prototype right-layout matrix.
 
template<typename Scalar >
auto right_mdspan (RightMatrix< Scalar > const &matrix)
 Return an immutable layout-right mdspan view of a prototype right-layout matrix.
 
template<typename Scalar >
void scal (Scalar const &alpha, std::span< Scalar > vector)
 Scale a local dense vector in place.
 
template<uni20::Real Scalar>
std::vector< std::size_t > select_nonsymmetric_restart_indices (std::vector< uni20::complex< Scalar > > const &values, NonsymmetricEigenParams< Scalar > const &params)
 Select retained Ritz or Schur indices for a nonsymmetric thick restart.
 
template<uni20::Real Scalar>
std::vector< std::size_t > select_nonsymmetric_ritz_indices (std::vector< uni20::complex< Scalar > > const &values, NonsymmetricEigenParams< Scalar > const &params)
 Select wanted Ritz indices for a nonsymmetric projected spectrum.
 
template<uni20::LapackReal Scalar>
RealSchurRestartSelection< Scalar > select_real_schur_restart_blocks (std::vector< RealSchurBlock< Scalar > > const &blocks, NonsymmetricEigenParams< Scalar > const &params)
 Select real Schur blocks for a nonsymmetric thick restart.
 
template<uni20::Real Scalar>
SymmetricRestartSelection< Scalar > select_symmetric_restart (std::vector< Scalar > const &values, std::vector< Scalar > const &residual_bounds, SymmetricEigenParams< Scalar > const &params, std::size_t shift_count, std::span< std::size_t const > protected_shift_indices={})
 Select wanted Ritz values and exact-shift candidates for symmetric restart.
 
template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > OpOps, KrylovMatrixFreeOperator< Vector, Scalar > BOps, typename MetricOps >
EigenResult< uni20::make_real_t< Scalar >, Vector > symmetric_lanczos_restarted_generalized_transformed (OpOps &op_ops, BOps &b_ops, MetricOps &metric_ops, Vector const &initial, SymmetricEigenParams< uni20::make_real_t< Scalar > > const &params, SymmetricSpectralTransformOptions< uni20::make_real_t< Scalar > > const &options)
 Run restarted symmetric Lanczos on a transformed generalized operator with a B metric.
 
template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > OpOps, KrylovMatrixFreeOperator< Vector, Scalar > BOps>
EigenResult< uni20::make_real_t< Scalar >, Vector > symmetric_lanczos_restarted_generalized_transformed (OpOps &op_ops, BOps &b_ops, Vector const &initial, SymmetricEigenParams< uni20::make_real_t< Scalar > > const &params, SymmetricSpectralTransformOptions< uni20::make_real_t< Scalar > > const &options)
 Run restarted symmetric Lanczos on a transformed generalized operator with default metric handling.
 
template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
EigenResult< uni20::make_real_t< Scalar >, Vector > symmetric_lanczos_restarted_standard (Ops &ops, Vector const &initial, SymmetricEigenParams< uni20::make_real_t< Scalar > > const &params)
 Run a native symmetric/Hermitian Lanczos solve with implicit restarts.
 
template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
EigenResult< uni20::make_real_t< Scalar >, Vector > symmetric_lanczos_restarted_transformed (Ops &op_ops, Vector const &initial, SymmetricEigenParams< uni20::make_real_t< Scalar > > const &params, SymmetricSpectralTransformOptions< uni20::make_real_t< Scalar > > const &options)
 Run restarted symmetric Lanczos on a caller-supplied transformed operator.
 
template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
EigenResult< uni20::make_real_t< Scalar >, Vector > symmetric_lanczos_standard (Ops &ops, Vector const &initial, SymmetricEigenParams< uni20::make_real_t< Scalar > > const &params)
 Run the native symmetric/Hermitian Lanczos full-projection solver.
 
template<uni20::Real Real>
symmetric_tridiagonal_view< Real > symmetric_tridiagonal (std::span< Real const > diagonal, std::span< Real const > offdiagonal)
 
template<uni20::LapackReal Scalar>
TridiagonalEigensystem< Scalar > symmetric_tridiagonal_eigensystem (std::vector< Scalar > diagonal, std::vector< Scalar > subdiagonal, bool compute_vectors)
 Solve a real symmetric tridiagonal eigensystem through LAPACK sterf or steqr.
 
template<uni20::LapackReal Scalar>
TridiagonalEigensystem< Scalar > symmetric_tridiagonal_eigensystem_divide_and_conquer (std::vector< Scalar > diagonal, std::vector< Scalar > subdiagonal, bool compute_vectors)
 Solve a real symmetric tridiagonal eigenvalue problem through LAPACK sterf.
 
template<uni20::LapackReal Scalar>
TridiagonalEigensystem< Scalar > symmetric_tridiagonal_eigensystem_index_range (std::vector< Scalar > diagonal, std::vector< Scalar > subdiagonal, std::size_t first_index, std::size_t last_index, bool compute_vectors)
 Solve a selected real symmetric tridiagonal eigensystem through LAPACK stevr.
 
template<uni20::LapackReal Scalar>
std::vector< Scalar > symmetric_tridiagonal_eigenvalues (std::vector< Scalar > diagonal, std::vector< Scalar > subdiagonal)
 
template<uni20::RealOrComplex Scalar, typename TimeScalar , typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
requires (std::constructible_from<uni20::make_real_t<Scalar>, TimeScalar> || (uni20::Complex<Scalar> && std::constructible_from<Scalar, TimeScalar>))
TaylorExponentialResult< Scalar, Vector > taylor_exponential_action (Ops &ops, Vector const &initial, TimeScalar time, uni20::make_real_t< Scalar > operator_norm_bound, TaylorExponentialParams< uni20::make_real_t< Scalar > > const &params={})
 Compute exp(t A) v using conservative scaled Taylor series.
 
template<typename Ops , typename Vector >
std::size_t validate_matrix_free_dimensions (Ops const &ops, Vector const &vector, char const *context)
 Validate that an initial/prototype vector matches the matrix-free problem dimension.
 

Typedef Documentation

◆ MatrixFill

Matrix region selected by LAPACK-style copy and set operations.

◆ RightMatrix

template<typename Scalar >
using uni20::krylov::RightMatrix = typedef uni20::DenseMatrix<Scalar, uni20::RowMajor>

Owning row-major dense matrix retained for layout-specific Krylov helpers.

◆ SymmetricSpectralTransform

Backward-compatible name for symmetric transform kinds.

◆ SymmetricSpectralTransformOptions

Backward-compatible name for symmetric transform options.

Enumeration Type Documentation

◆ GmresEstimateKind

Provenance of a supplied operator quantity, not of a computed error.

Enumerator
estimate 
upper_bound 

◆ GmresRefinementStatus

Outer termination, distinct from convergence of an inner correction.

Enumerator
converged 
iteration_limit 
stagnated 
inner_failed 
nonfinite_input 
nonfinite_result 

◆ GmresStatus

enum class uni20::krylov::GmresStatus
strong

Numerical termination of a matrix-free linear solve.

Enumerator
converged 
iteration_limit 
stagnated 
breakdown 
nonfinite_input 
nonfinite_result 

◆ KrylovDiagnosticsLevel

Amount of solver-internal diagnostic state to retain.

Enumerator
None 
Summary 
Full 

◆ MatrixNorm

enum class uni20::krylov::MatrixNorm
strong

LAPACK-compatible dense matrix norm selector.

Enumerator
MaxAbs 
One 
Infinity 
Frobenius 

◆ MatrixSide

enum class uni20::krylov::MatrixSide
strong

Matrix side selected by LAPACK-style multiply and solve operations.

Enumerator
Left 
Right 

◆ MatrixTranspose

enum class uni20::krylov::MatrixTranspose
strong

Matrix transpose mode for local dense Krylov operations.

Enumerator
None 
Transpose 
ConjugateTranspose 

◆ NonsymmetricStatus

Native nonsymmetric solver status.

Enumerator
Converged 
NotConverged 
ComplexPairEncountered 
ComplexPromotionRecommended 
RealSchurPairRequired 
AmbiguousReality 
Breakdown 
InvalidInput 

◆ RealNonsymmetricBalanceJob

LAPACK balancing operations for a dense real nonsymmetric matrix.

Enumerator
None 
Permute 
Scale 
Both 

◆ RealNonsymmetricPolicy

Policy for real nonsymmetric solves when wanted Ritz values may be complex.

Enumerator
RequireRealEigenpairs 

Accept only Ritz values that are numerically real; report genuinely complex wanted pairs.

AllowRealSchurPairs 

Allow real Schur two-plane output for complex conjugate pairs once that output is implemented.

PromoteToComplexSuggested 

Stop with a promotion recommendation when wanted Ritz values are genuinely complex.

◆ RitzReality

enum class uni20::krylov::RitzReality
strong

Numerical reality classification for a complex Ritz value from a real Arnoldi solve.

Enumerator
Real 
Ambiguous 
Complex 

◆ SpectrumPart

enum class uni20::krylov::SpectrumPart
strong

Spectrum selector for matrix-free eigenvalue solvers.

Enumerator
LargestMagnitude 
SmallestMagnitude 
LargestAlgebraic 
SmallestAlgebraic 
BothEnds 
LargestReal 
SmallestReal 
LargestImaginary 
SmallestImaginary 

◆ SymmetricTransformKind

Transform represented by the caller-supplied symmetric Krylov operator.

Enumerator
Regular 
GeneralizedInverse 
ShiftInvert 
Buckling 
Cayley 

Function Documentation

◆ apply_real_bidiagonal_left_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_bidiagonal_left_factor ( RealBidiagonalReduction< Scalar > const &  reduction,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Left,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the left orthogonal factor Q from a real bidiagonal reduction.

Applies Q or Q^T using LAPACK ormbr.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact bidiagonal reduction returned by real_bidiagonal_reduction.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_bidiagonal_right_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_bidiagonal_right_factor ( RealBidiagonalReduction< Scalar > const &  reduction,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Right,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the right orthogonal factor P from a real bidiagonal reduction.

Applies P or P^T using LAPACK ormbr.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact bidiagonal reduction returned by real_bidiagonal_reduction.
targetMatrix overwritten by op(P) * target or target * op(P).
sideWhether op(P) multiplies target from the left or right.
transposeMatrix operation applied to P.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_hessenberg_orthogonal_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_hessenberg_orthogonal_factor ( RealHessenbergReduction< Scalar > const &  reduction,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Left,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the orthogonal factor from a compact real Hessenberg reduction.

Applies Q, or Q^T, from the Householder data returned by real_hessenberg_reduction to a dense target matrix using LAPACK ormhr.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact Hessenberg reduction returned by real_hessenberg_reduction.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_lq_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_lq_factor ( RealCompactLqFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Right,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the orthogonal factor from a compact real LQ factorization.

Applies Q, or Q^T, from a Householder LQ factorization to a dense target matrix using LAPACK ormlq.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationCompact LQ factorization returned by real_compact_lq_factorization.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_ql_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_ql_factor ( RealCompactQlFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Left,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the orthogonal factor from a compact real QL factorization.

Applies Q, or Q^T, from a Householder QL factorization to a dense target matrix using LAPACK ormql.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationCompact QL factorization returned by real_compact_ql_factorization.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_qr_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_qr_factor ( RealCompactQrFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Left,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the orthogonal factor from a compact real QR factorization.

Applies Q, or Q^T, from a Householder QR factorization to a dense target matrix using LAPACK ormqr.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationCompact QR factorization returned by real_compact_qr_factorization.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_rq_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_rq_factor ( RealCompactRqFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Right,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the orthogonal factor from a compact real RQ factorization.

Applies Q, or Q^T, from a Householder RQ factorization to a dense target matrix using LAPACK ormrq.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationCompact RQ factorization returned by real_compact_rq_factorization.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_real_symmetric_tridiagonal_orthogonal_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::apply_real_symmetric_tridiagonal_orthogonal_factor ( RealSymmetricTridiagonalReduction< Scalar > const &  reduction,
detail::ColumnMajorLapackMatrix< Scalar >  target,
MatrixSide  side = MatrixSide::Left,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Apply the orthogonal factor from a compact real symmetric tridiagonal reduction.

Applies Q, or Q^T, from the Householder data returned by real_symmetric_tridiagonal_reduction to a dense target matrix using LAPACK ormtr.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact tridiagonal reduction returned by real_symmetric_tridiagonal_reduction.
targetMatrix overwritten by op(Q) * target or target * op(Q).
sideWhether op(Q) multiplies target from the left or right.
transposeMatrix operation applied to Q.
Returns
Matrix after applying the encoded orthogonal factor.

◆ apply_symmetric_qr_shifts()

template<uni20::Real Scalar>
SymmetricQrShiftResult< Scalar > uni20::krylov::apply_symmetric_qr_shifts ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  subdiagonal,
std::vector< Scalar > const &  shifts 
)

Apply implicit shifted QR sweeps to a symmetric tridiagonal matrix.

Each shift is applied by Givens rotations that chase the QR bulge through the tridiagonal, while the accumulated orthogonal transform is returned for basis compression. Updating the opaque Lanczos basis and residual is handled by a later restart slice.

Template Parameters
ScalarReal scalar type.
Parameters
diagonalMain diagonal of the tridiagonal matrix.
subdiagonalSubdiagonal entries, length diagonal.size() - 1.
shiftsExact shifts to apply.
Returns
Updated tridiagonal coefficients and accumulated orthogonal transform.

◆ arnoldi_factorize()

template<uni20::RealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
ArnoldiFactorization< Scalar, Vector > uni20::krylov::arnoldi_factorize ( Ops &  ops,
Vector const &  initial,
int  max_steps,
uni20::make_real_t< Scalar >  breakdown_tolerance = uni20::make_real_t<Scalar>{} 
)

Build a full-reorthogonalized Arnoldi factorization.

This constructs A V_m = V_{m+1} H_m when no happy breakdown is detected. On happy breakdown, the final subdiagonal is zero and the basis spans an invariant subspace. Vector storage and operations are entirely delegated to ops; only the small Hessenberg projection is stored locally.

Template Parameters
ScalarVector-space scalar type.
VectorOpaque vector type.
OpsMatrix-free operator/vector operation type.
Parameters
opsMatrix-free vector operations and operator application.
initialInitial vector used to seed the Arnoldi basis.
max_stepsMaximum number of Arnoldi steps.
breakdown_toleranceAbsolute residual norm threshold for happy breakdown.
Returns
Arnoldi factorization.

◆ arnoldi_projected_hessenberg()

template<uni20::RealOrComplex Scalar, typename Vector >
uni20::DenseMatrix< Scalar > uni20::krylov::arnoldi_projected_hessenberg ( ArnoldiFactorization< Scalar, Vector > const &  factorization)

Copy the square projected Hessenberg block from an Arnoldi factorization.

Template Parameters
ScalarVector-space scalar type.
VectorOpaque vector type used by the Arnoldi basis.
Parameters
factorizationArnoldi factorization to extract from.
Returns
The leading m-by-m projected Hessenberg matrix.

◆ axpy()

template<typename Scalar >
void uni20::krylov::axpy ( std::span< Scalar >  y,
Scalar const &  alpha,
std::span< Scalar const >  x 
)

Add a scaled local dense vector to another vector.

Template Parameters
ScalarElement type.
Parameters
yDestination vector updated as y += alpha * x.
alphaScale factor.
xSource vector.

◆ BlockTensorMatrixFreeOps()

template<class Tensor , class Operator >
uni20::krylov::BlockTensorMatrixFreeOps ( Tensor const &  ,
Operator   
) -> BlockTensorMatrixFreeOps< std::remove_cvref_t< Tensor >, Operator >

◆ classify_ritz_reality()

template<uni20::Complex C>
RitzReality uni20::krylov::classify_ritz_reality ( C  theta,
uni20::make_real_t< C >  tolerance = uni20::make_real_t<C>{},
uni20::make_real_t< C >  scale = uni20::make_real_t<C>{1},
uni20::make_real_t< C >  ambiguity_factor = uni20::make_real_t<C>{10} 
)

Classify whether a complex Ritz value is numerically real.

This is intended for real nonsymmetric Arnoldi. A real operator can have complex-conjugate Ritz pairs; transfer-matrix workflows often want to remain in a real path when the wanted fixed point is real, but detect genuine or borderline time-reversal-symmetry breaking. Values with |imag(theta)| <= tolerance * scale are classified as real. Values within ambiguity_factor of that boundary are classified as ambiguous.

Template Parameters
CComplex scalar type deduced from the Ritz value.
Parameters
thetaRitz value to classify.
toleranceRelative imaginary-part tolerance. If zero or negative, a machine-precision default is used, derived from theta for runtime scalars. An exact theta requires an explicit finite-precision tolerance.
scaleProblem or projected-matrix scale. Values below one are raised to one.
ambiguity_factorWidth of the ambiguous band above the real threshold.
Returns
Reality classification for theta.

◆ complex_generalized_hermitian_eigensystem()

template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > uni20::krylov::complex_generalized_hermitian_eigensystem ( detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  matrix,
detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  metric,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense type-1 generalized complex Hermitian eigensystem through LAPACK hegv.

Solves A * x = lambda * B * x, where A is complex Hermitian and B is complex Hermitian positive definite. Eigenvalues are returned in ascending order.

Template Parameters
RealUnderlying real precision.
Parameters
matrixComplex Hermitian square matrix A. Only the selected triangle is read.
metricComplex Hermitian positive definite square matrix B.
compute_vectorsWhether to compute generalized eigenvectors.
triangleTriangle of matrix and metric supplied to LAPACK.
Returns
Eigenvalues and, optionally, generalized eigenvectors.

◆ complex_generalized_hermitian_eigensystem_divide_and_conquer()

template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > uni20::krylov::complex_generalized_hermitian_eigensystem_divide_and_conquer ( detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  matrix,
detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  metric,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense type-1 generalized complex Hermitian eigensystem through LAPACK hegvd.

Uses the divide-and-conquer generalized Hermitian eigensystem driver for A * x = lambda * B * x.

Template Parameters
RealUnderlying real precision.
Parameters
matrixComplex Hermitian square matrix A. Only the selected triangle is read.
metricComplex Hermitian positive definite square matrix B.
compute_vectorsWhether to compute generalized eigenvectors.
triangleTriangle of matrix and metric supplied to LAPACK.
Returns
Eigenvalues and, optionally, generalized eigenvectors.

◆ complex_generalized_hermitian_eigensystem_index_range()

template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > uni20::krylov::complex_generalized_hermitian_eigensystem_index_range ( detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  matrix,
detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  metric,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a selected dense type-1 generalized complex Hermitian eigensystem through LAPACK hegvx.

Selects eigenpairs by 0-based inclusive index in ascending eigenvalue order for A * x = lambda * B * x.

Template Parameters
RealUnderlying real precision.
Parameters
matrixComplex Hermitian square matrix A. Only the selected triangle is read.
metricComplex Hermitian positive definite square matrix B.
first_indexFirst 0-based eigenvalue index to compute.
last_indexLast 0-based eigenvalue index to compute.
compute_vectorsWhether to compute selected generalized eigenvectors.
triangleTriangle of matrix and metric supplied to LAPACK.
Returns
Selected eigenvalues and, optionally, selected generalized eigenvectors.

◆ complex_hermitian_eigensystem()

template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > uni20::krylov::complex_hermitian_eigensystem ( detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  matrix,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense complex Hermitian eigensystem through LAPACK heev.

Eigenvalues are returned in ascending order. If compute_vectors is true, eigenvectors is an n-by-n column-major matrix whose columns are normalized eigenvectors.

Template Parameters
RealUnderlying real precision.
Parameters
matrixComplex Hermitian square matrix. Only the selected triangle is read.
compute_vectorsWhether to compute eigenvectors.
triangleTriangle of matrix supplied to LAPACK.
Returns
Eigenvalues and, optionally, eigenvectors.

◆ complex_hermitian_eigensystem_divide_and_conquer()

template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > uni20::krylov::complex_hermitian_eigensystem_divide_and_conquer ( detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  matrix,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense complex Hermitian eigensystem through LAPACK heevd.

Uses the divide-and-conquer Hermitian eigensystem driver. Eigenvalues are returned in ascending order.

Template Parameters
RealUnderlying real precision.
Parameters
matrixComplex Hermitian square matrix. Only the selected triangle is read.
compute_vectorsWhether to compute eigenvectors.
triangleTriangle of matrix supplied to LAPACK.
Returns
Eigenvalues and, optionally, eigenvectors.

◆ complex_hermitian_eigensystem_index_range()

template<uni20::LapackComplexReal Real>
ComplexHermitianEigensystem< Real > uni20::krylov::complex_hermitian_eigensystem_index_range ( detail::ColumnMajorLapackMatrix< uni20::detail::standard_complex< Real > >  matrix,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a selected dense complex Hermitian eigensystem through LAPACK heevr.

Selects eigenpairs by 0-based inclusive index in ascending eigenvalue order.

Template Parameters
RealUnderlying real precision.
Parameters
matrixComplex Hermitian square matrix. Only the selected triangle is read.
first_indexFirst 0-based eigenvalue index to compute.
last_indexLast 0-based eigenvalue index to compute.
compute_vectorsWhether to compute selected eigenvectors.
triangleTriangle of matrix supplied to LAPACK.
Returns
Selected eigenvalues and, optionally, selected eigenvectors.

◆ complex_nonsymmetric_arnoldi_standard()

template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
NonsymmetricEigenResult< Real, Vector > uni20::krylov::complex_nonsymmetric_arnoldi_standard ( Ops &  ops,
Vector const &  initial,
NonsymmetricEigenParams< Real > const &  params 
)

Run a restarted complex nonsymmetric Arnoldi solver.

This Phase 5 entry point keeps the Arnoldi basis and matrix-free operations complex, extracts complex projected Ritz values, and uses complex Schur thick restarts when the initial projected subspace does not satisfy the convergence criterion.

Template Parameters
RealUnderlying real precision.
VectorOpaque vector type.
OpsMatrix-free operator/vector operation type.
Parameters
opsMatrix-free vector operations and operator application.
initialInitial residual/start vector.
paramsSolver parameters. Tolerances and residuals use Real.
Returns
Selected Ritz values, residual bounds, optional complex Ritz vectors, and diagnostics.

◆ complex_nonsymmetric_eigensystem()

template<uni20::LapackReal Real>
ComplexNonsymmetricEigensystem< Real > uni20::krylov::complex_nonsymmetric_eigensystem ( uni20::DenseMatrix< uni20::detail::standard_complex< Real > >  matrix,
bool  compute_right_vectors 
)

Solve a dense real nonsymmetric eigensystem through LAPACK geevx.

The expert driver balances the matrix (‘BALANC='B’) and computes reciprocal condition estimates for both eigenvalues and right eigenvectors (SENSE='B'). It computes left and right eigenvectors internally because LAPACK needs them for these estimates. The input matrix is copied because LAPACK overwrites it. If right eigenvectors are requested, real eigenvectors are returned as complex vectors with zero imaginary part, and complex conjugate pairs are unpacked from LAPACK's adjacent real-vector representation. \tparam Real Real scalar type satisfyinguni20::LapackReal`.

Parameters
matrixReal square matrix in column-major local storage.
compute_right_vectorsWhether to compute right eigenvectors.
Returns
Complex eigenvalues, optional right eigenvectors, balancing data, and reciprocal condition estimates.

◆ complex_schur()

template<uni20::LapackReal Real>
ComplexSchurDecomposition< Real > uni20::krylov::complex_schur ( uni20::DenseMatrix< uni20::detail::standard_complex< Real > >  matrix,
bool  compute_vectors 
)

Compute the complex Schur decomposition of a column-major DenseMatrix.

Template Parameters
Realfloat or double.
Parameters
matrixComplex square matrix in current Krylov local storage.
compute_vectorsWhether to compute Schur vectors.
Returns
Complex Schur form, optional Schur vectors, and eigenvalues.

◆ complex_schur_layout_right()

template<uni20::LapackReal Real>
RightComplexSchurDecomposition< Real > uni20::krylov::complex_schur_layout_right ( RightMatrix< uni20::detail::standard_complex< Real > >  matrix,
bool  compute_vectors 
)

Compute the complex Schur decomposition of a layout-right matrix through LAPACK gees.

The public wrapper accepts the prototype row-major RightMatrix and copies to a column-major DenseMatrix before calling Fortran LAPACK. Complex Schur blocks are all scalar 1x1 entries, so eigenvalues are the diagonal of the Schur form.

Template Parameters
Realfloat or double.
Parameters
matrixComplex square matrix in logical layout-right storage.
compute_vectorsWhether to compute Schur vectors.
Returns
Complex Schur form, optional Schur vectors, and eigenvalues.

◆ compress_complex_schur_arnoldi_restart()

template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
ComplexSchurCompressedArnoldiFactorization< Real, Vector > uni20::krylov::compress_complex_schur_arnoldi_restart ( Ops &  ops,
ArnoldiFactorization< uni20::complex< Real >, Vector > const &  factorization,
NonsymmetricEigenParams< Real > const &  params 
)

Compress a complex Arnoldi factorization through complex Schur reordering.

Computes the complex Schur form of the projected Hessenberg matrix, reorders selected Schur entries to the leading part, transforms the opaque Arnoldi basis by the Schur vectors, and returns the compressed Krylov-Schur relation A V_k = V_k T_k + f b^T.

Template Parameters
RealReal precision whose uni20::complex<Real> has dense LAPACK coverage.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free vector operations.
factorizationInput Arnoldi factorization.
paramsNonsymmetric solve parameters used for Schur entry selection.
Returns
Compressed restart relation ready for Krylov-Schur expansion.

◆ compress_real_schur_arnoldi_restart()

template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
RealSchurCompressedArnoldiFactorization< Scalar, Vector > uni20::krylov::compress_real_schur_arnoldi_restart ( Ops &  ops,
ArnoldiFactorization< Scalar, Vector > const &  factorization,
NonsymmetricEigenParams< Scalar > const &  params 
)

Compress an Arnoldi factorization through real Schur block reordering.

Computes the real Schur form of the projected Hessenberg matrix, reorders selected Schur blocks to the leading part, transforms the opaque Arnoldi basis by the Schur vectors, and returns the compressed Krylov-Schur relation A V_k = V_k T_k + f b^T.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free vector operations.
factorizationInput Arnoldi factorization.
paramsNonsymmetric solve parameters used for block selection.
Returns
Compressed restart relation ready for Krylov-Schur expansion.

◆ compress_symmetric_lanczos_restart()

template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
SymmetricCompressedLanczosFactorization< uni20::make_real_t< Scalar >, Vector > uni20::krylov::compress_symmetric_lanczos_restart ( Ops &  ops,
std::vector< Vector > const &  basis,
Vector const &  residual,
SymmetricQrShiftResult< uni20::make_real_t< Scalar > > const &  shifted,
std::size_t  retained_count 
)

Compress a Lanczos factorization with the accumulated restart transform.

Given a factorization of order kplusp, it keeps the first retained_count columns of V Q, truncates the transformed tridiagonal projection, and updates the residual as r <- sigma_k r + beta_k (V Q)[:, k + 1], where sigma_k = Q(kplusp, k) and beta_k = T(k + 1, k). All application-space vector work goes through the matrix-free operation object.

Template Parameters
ScalarReal scalar type.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free operation object.
basisOriginal Lanczos basis vectors.
residualOriginal residual vector.
shiftedShifted projected factorization and accumulated transform.
retained_countNumber of transformed basis vectors to keep.
Returns
Compressed factorization ready for renewed basis expansion.

◆ copy()

template<typename Scalar >
void uni20::krylov::copy ( std::span< Scalar >  destination,
std::span< Scalar const >  source 
)

Copy a local dense vector.

Template Parameters
ScalarElement type.
Parameters
destinationDestination vector overwritten with source.
sourceSource vector.

◆ copy_left_to_right()

template<typename Scalar >
RightMatrix< Scalar > uni20::krylov::copy_left_to_right ( uni20::DenseMatrix< Scalar > const &  matrix)

Copy a column-major DenseMatrix into a row-major matrix.

Template Parameters
ScalarElement type.
Parameters
matrixSource column-major matrix.
Returns
Row-major matrix with the same logical entries.

◆ copy_right_to_left()

template<typename Scalar >
uni20::DenseMatrix< Scalar > uni20::krylov::copy_right_to_left ( RightMatrix< Scalar > const &  matrix)

Copy a row-major matrix into a column-major DenseMatrix.

Template Parameters
ScalarElement type.
Parameters
matrixSource row-major matrix.
Returns
Column-major matrix with the same logical entries.

◆ default_adaptive_exponential_krylov_dimension()

int uni20::krylov::default_adaptive_exponential_krylov_dimension ( std::size_t  problem_dimension)
inline

Return the default adaptive Krylov projection cap for exponential actions.

◆ default_complex_pair_tolerance() [1/2]

template<uni20::Real Scalar>
requires requires { uni20::numeric_limits<Scalar>::epsilon(); }
Scalar uni20::krylov::default_complex_pair_tolerance ( )

Default imaginary-part tolerance for deciding whether a real Arnoldi Ritz value is real.

Template Parameters
ScalarReal scalar type.
Returns
A conservative scale multiplier derived from machine precision.

◆ default_complex_pair_tolerance() [2/2]

template<uni20::Real Scalar>
Scalar uni20::krylov::default_complex_pair_tolerance ( Scalar const &  exemplar)

Default reality tolerance using the exemplar's working precision.

Exceptions
std::logic_errorIf a runtime-precision exemplar is exact or unset.

◆ default_exponential_krylov_dimension()

int uni20::krylov::default_exponential_krylov_dimension ( std::size_t  problem_dimension)
inline

Return the default Krylov projection dimension for exponential actions.

◆ default_nonsymmetric_krylov_dimension()

int uni20::krylov::default_nonsymmetric_krylov_dimension ( int  eigenvalue_count,
std::size_t  problem_dimension 
)
inline

Return the default nonsymmetric Arnoldi subspace dimension.

Nonsymmetric restarts are more sensitive to nonnormality and complex conjugate Schur blocks than Hermitian Lanczos restarts, so the native default is deliberately roomier than the minimal symmetric/Hermitian default: ncv = min(n, max(20, 6*nev + 8)).

◆ default_nonsymmetric_retained_ritz_count()

int uni20::krylov::default_nonsymmetric_retained_ritz_count ( int  eigenvalue_count,
int  krylov_dimension 
)
inline

Return the default nonsymmetric retained Schur dimension.

The native nonsymmetric default keeps guard vectors by retaining max(2*nev, nev+4) Schur dimensions, clamped below ncv. This improves robustness on nonnormal and clustered cases while still leaving room for restart filtering.

◆ default_symmetric_krylov_dimension()

int uni20::krylov::default_symmetric_krylov_dimension ( int  eigenvalue_count,
std::size_t  problem_dimension 
)
inline

Return the default symmetric/Hermitian Krylov subspace dimension.

The default follows the common implicitly restarted Krylov guideline ncv = min(n, max(20, 2*nev + 1)). Callers may still set krylov_dimension explicitly when memory is tight or a hard clustered problem needs a larger search space.

◆ default_symmetric_retained_ritz_count()

int uni20::krylov::default_symmetric_retained_ritz_count ( int  eigenvalue_count,
int  krylov_dimension 
)
inline

Return the default symmetric/Hermitian retained Ritz count.

Hermitian problems default to a minimal implicit restart: keep exactly the requested invariant subspace and use the remaining Krylov directions as shifts. Clustered problems may set retained_ritz_count larger to get thick-restart guard vectors.

◆ dot()

template<uni20::Real Scalar>
Scalar uni20::krylov::dot ( std::span< Scalar const >  x,
std::span< Scalar const >  y 
)

Compute a BLAS-style real dot product.

Template Parameters
ScalarReal scalar type.
Parameters
xLeft vector.
yRight vector.
Returns
Sum of x[i] * y[i].

◆ dotc()

template<typename Scalar >
Scalar uni20::krylov::dotc ( std::span< Scalar const >  x,
std::span< Scalar const >  y 
)

Compute a conjugated dot product.

Template Parameters
ScalarElement type.
Parameters
xLeft vector, conjugated elementwise for complex scalar types.
yRight vector.
Returns
Sum of conj(x[i]) * y[i].

◆ dotu()

template<typename Scalar >
Scalar uni20::krylov::dotu ( std::span< Scalar const >  x,
std::span< Scalar const >  y 
)

Compute an unconjugated dot product.

Template Parameters
ScalarElement type.
Parameters
xLeft vector.
yRight vector.
Returns
Sum of x[i] * y[i].

◆ effective_exponential_krylov_dimension()

template<uni20::Real Scalar>
int uni20::krylov::effective_exponential_krylov_dimension ( KrylovExponentialParams< Scalar > const &  params,
std::size_t  problem_dimension 
)

Return the effective Krylov projection dimension for exponential actions.

◆ effective_nonsymmetric_krylov_dimension()

template<uni20::Real Scalar>
int uni20::krylov::effective_nonsymmetric_krylov_dimension ( NonsymmetricEigenParams< Scalar > const &  params,
std::size_t  problem_dimension 
)

Return the effective nonsymmetric Arnoldi subspace dimension.

◆ effective_nonsymmetric_retained_ritz_count()

template<uni20::Real Scalar>
int uni20::krylov::effective_nonsymmetric_retained_ritz_count ( NonsymmetricEigenParams< Scalar > const &  params,
int  krylov_dimension 
)

Return the effective nonsymmetric retained Ritz or Schur count.

◆ effective_symmetric_krylov_dimension()

template<uni20::Real Scalar>
int uni20::krylov::effective_symmetric_krylov_dimension ( SymmetricEigenParams< Scalar > const &  params,
std::size_t  problem_dimension 
)

Return the effective symmetric/Hermitian Krylov subspace dimension.

◆ effective_symmetric_retained_ritz_count()

template<uni20::Real Scalar>
int uni20::krylov::effective_symmetric_retained_ritz_count ( SymmetricEigenParams< Scalar > const &  params,
int  krylov_dimension 
)

Return the effective symmetric/Hermitian retained Ritz count.

◆ expand_complex_schur_arnoldi_restart()

template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
ArnoldiFactorization< uni20::complex< Real >, Vector > uni20::krylov::expand_complex_schur_arnoldi_restart ( Ops &  ops,
ComplexSchurCompressedArnoldiFactorization< Real, Vector > const &  compressed,
std::size_t  target_step_count,
Real  breakdown_tolerance = Real{} 
)

Expand a compressed complex Schur Arnoldi relation back to a requested dimension.

The compressed relation has the form A V_k = V_k T_k + f b^T. If f is nonzero, this routine normalizes it as the next Arnoldi vector, writes ||f|| b^T into the next projected row, and resumes full reorthogonalized Arnoldi expansion until target_step_count is reached or happy breakdown occurs.

Template Parameters
RealReal precision whose uni20::complex<Real> has dense LAPACK coverage.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free vector operations and operator application.
compressedCompressed Schur restart relation.
target_step_countDesired projected dimension after expansion.
breakdown_toleranceAbsolute residual norm threshold for happy breakdown.
Returns
Expanded Arnoldi relation.

◆ expand_real_schur_arnoldi_restart()

template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
ArnoldiFactorization< Scalar, Vector > uni20::krylov::expand_real_schur_arnoldi_restart ( Ops &  ops,
RealSchurCompressedArnoldiFactorization< Scalar, Vector > const &  compressed,
std::size_t  target_step_count,
Scalar  breakdown_tolerance = Scalar{} 
)

Expand a compressed real Schur Arnoldi relation back to a requested dimension.

The compressed relation has the form A V_k = V_k T_k + f b^T. If f is nonzero, this routine normalizes it as the next Arnoldi vector, writes ||f|| b^T into the next projected row, and resumes full reorthogonalized Arnoldi expansion until target_step_count is reached or happy breakdown occurs. The returned factorization uses the same storage convention as arnoldi_factorize.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free vector operations and operator application.
compressedCompressed Schur restart relation.
target_step_countDesired projected dimension after expansion.
breakdown_toleranceAbsolute residual norm threshold for happy breakdown.
Returns
Expanded Arnoldi relation.

◆ exponential_adaptive_acceptance_enabled()

template<uni20::Real Scalar>
bool uni20::krylov::exponential_adaptive_acceptance_enabled ( KrylovExponentialParams< Scalar > const &  params)

◆ extract_arnoldi_ritz()

template<uni20::LapackReal Scalar, typename Vector >
ArnoldiRitzExtraction< Scalar > uni20::krylov::extract_arnoldi_ritz ( ArnoldiFactorization< Scalar, Vector > const &  factorization,
Scalar  complex_pair_tolerance = Scalar{},
Scalar  scale = Scalar{1} 
)

Extract projected Ritz values and residual estimates from a real Arnoldi factorization.

The Arnoldi relation gives A V_m y - theta V_m y = h_{m+1,m} (e_m^T y) v_{m+1} before happy breakdown. This routine solves the small projected Hessenberg problem and reports that residual bound without touching the caller-owned vector backend.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
VectorOpaque vector type used by the Arnoldi basis.
Parameters
factorizationArnoldi factorization to extract from.
complex_pair_toleranceRelative imaginary-part tolerance for reality classification.
scaleOptional projected-problem scale for reality classification.
Returns
Complex Ritz values, projected right eigenvectors, residual bounds, and reality classifications.

◆ extract_complex_arnoldi_ritz()

template<uni20::LapackComplex Complex, typename Vector >
ArnoldiRitzExtraction< uni20::make_real_t< Complex > > uni20::krylov::extract_complex_arnoldi_ritz ( ArnoldiFactorization< Complex, Vector > const &  factorization,
uni20::make_real_t< Complex >  complex_pair_tolerance = uni20::make_real_t<Complex>{},
uni20::make_real_t< Complex >  scale = uni20::make_real_t<Complex>{1} 
)

Extract projected Ritz values from a complex Arnoldi factorization.

The Arnoldi relation gives A V_m y - theta V_m y = h_{m+1,m} (e_m^T y) v_{m+1} before happy breakdown. This routine solves the small complex projected Hessenberg problem and reports that residual bound.

Template Parameters
ComplexComplex scalar type with dense LAPACK coverage, deduced from the factorization.
VectorOpaque vector type used by the Arnoldi basis.
Parameters
factorizationComplex Arnoldi factorization to extract from.
complex_pair_toleranceRelative imaginary-part tolerance for reality classification.
scaleOptional projected-problem scale for reality classification.
Returns
Complex Ritz values, projected right eigenvectors, residual bounds, and reality classifications.

◆ gemv()

template<typename Scalar >
void uni20::krylov::gemv ( std::span< Scalar >  y,
Scalar const &  alpha,
uni20::DenseMatrix< Scalar > const &  matrix,
std::span< Scalar const >  x,
Scalar const &  beta,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Compute a dense matrix-vector product.

Template Parameters
ScalarElement type.
Parameters
yOutput vector updated as y = alpha * op(matrix) * x + beta * y.
alphaScale factor for the matrix-vector product.
matrixInput matrix.
xInput vector.
betaScale factor for the original y value.
transposeMatrix operation applied before multiplication.

◆ gerc()

template<typename Scalar >
void uni20::krylov::gerc ( uni20::DenseMatrix< Scalar > &  matrix,
Scalar const &  alpha,
std::span< Scalar const >  x,
std::span< Scalar const >  y 
)

Apply a conjugated dense rank-one update.

Template Parameters
ScalarElement type.
Parameters
matrixMatrix updated as matrix += alpha * x * conj(y)^T.
alphaScale factor.
xLeft vector.
yRight vector, conjugated elementwise for complex scalar types.

◆ geru()

template<typename Scalar >
void uni20::krylov::geru ( uni20::DenseMatrix< Scalar > &  matrix,
Scalar const &  alpha,
std::span< Scalar const >  x,
std::span< Scalar const >  y 
)

Apply a dense rank-one update.

Template Parameters
ScalarElement type.
Parameters
matrixMatrix updated as matrix += alpha * x * y^T.
alphaScale factor.
xLeft vector.
yRight vector.

◆ gmres_refine_with_info()

template<class WSpace , class ISpace , class RSpace , class IOp , class ROp , class P , class Transfer >
auto uni20::krylov::gmres_refine_with_info ( GmresRefinementContext< WSpace, ISpace, RSpace, IOp, ROp, P, Transfer > &  context,
typename WSpace::vector_type &  x,
typename RSpace::vector_type const &  b,
GmresRefinementOptions< typename ISpace::real_type, typename RSpace::real_type > const &  options = {} 
)

Refine a supplied iterate using matrix-free GMRES correction solves.

Evaluates r=b-A*x in the residual space, normalizes r before converting to the inner space, solves for a normalized correction, rescales it in residual precision and updates x in working precision. Inner convergence alone never implies outer convergence. An inner failure stops refinement without applying its partial correction. Candidate iterates are published only after successful evaluation of their true residual. No automatic precision escalation occurs.

Precondition
Spaces represent the same mathematical vector space. Transfer operations preserve its symmetry and layout semantics; there is no dense fallback.
Exceptions
std::invalid_argumentFor incompatible dimensions or invalid options. Callback exceptions propagate.

◆ gmres_with_info() [1/4]

template<RealOrComplex S, class Ops , class Op , class P , class V >
requires KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> && KrylovPreconditioner<P, V>
GmresInfo< make_real_t< S > > uni20::krylov::gmres_with_info ( Ops &  ops,
Op &  op,
P &  preconditioner,
V &  x,
V const &  b,
GmresOptions< make_real_t< S > > const &  options,
Precision  precision 
)

Solve A*x=b with restarted GMRES and a fixed right preconditioner.

Preserves the supplied initial guess. Acceptance uses a recomputed residual, ||b-A*x|| <= max(atol, rtol*||b||). Modified Gram-Schmidt uses selective second-pass orthogonalization. Only the Arnoldi basis is stored; a combined basis correction is preconditioned once per cycle. Callbacks own backend selection, memory placement and any higher-precision operator/preconditioner arithmetic. Scalar returns and Hessenberg arithmetic use precision; vector operations must implement that working precision without discarding vector metadata.

Precondition
Vector copies allocate independent values. Norms/inner products must expose nonfinite data as nonfinite results. The operator and preconditioner are fixed linear maps throughout the call.
Exceptions
std::invalid_argumentFor incompatible dimensions, invalid tolerances or a zero restart length. Callback exceptions propagate.
Returns
Numerical status and diagnostics of the last published iterate.

◆ gmres_with_info() [2/4]

template<RealOrComplex S, class Ops , class Op , class P , class V >
requires (!has_runtime_precision_v<S>) && KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> && KrylovPreconditioner<P, V>
auto uni20::krylov::gmres_with_info ( Ops &  ops,
Op &  op,
P &  preconditioner,
V &  x,
V const &  b,
GmresOptions< make_real_t< S > > const &  options = {} 
)

Fixed-scalar GMRES using the scalar's native precision.

◆ gmres_with_info() [3/4]

template<RealOrComplex S, class Ops , class Op , class V >
requires KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V>
auto uni20::krylov::gmres_with_info ( Ops &  ops,
Op &  op,
V &  x,
V const &  b,
GmresOptions< make_real_t< S > > const &  options,
Precision  p 
)

GMRES without preconditioning, at explicit scalar precision.

◆ gmres_with_info() [4/4]

template<RealOrComplex S, class Ops , class Op , class V >
requires (!has_runtime_precision_v<S>) && KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V>
auto uni20::krylov::gmres_with_info ( Ops &  ops,
Op &  op,
V &  x,
V const &  b,
GmresOptions< make_real_t< S > > const &  options = {} 
)

Fixed-scalar GMRES without preconditioning.

◆ hermitian_krylov_exponential_action()

template<uni20::LapackScalar Scalar, typename TimeScalar , typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
requires (std::constructible_from<uni20::make_real_t<Scalar>, TimeScalar> || (uni20::Complex<Scalar> && std::constructible_from<Scalar, TimeScalar>))
KrylovExponentialResult< Scalar, Vector > uni20::krylov::hermitian_krylov_exponential_action ( Ops &  ops,
Vector const &  initial,
TimeScalar  time,
KrylovExponentialParams< uni20::make_real_t< Scalar > > const &  params = {} 
)

Approximate exp(t A) v for a Hermitian matrix-free operator.

Builds a Lanczos projection T_m, evaluates exp(t T_m) with the current CPU dense Padé backend, and returns ||v|| V_m exp(t T_m) e_1. When relative_tolerance > 0, pure imaginary time is treated as the usual unitary exp(-i t H) case and the routine stops at the first dimension whose direct defect-integral estimate satisfies the relative target. Other Hermitian nonexpansive actions may opt in with assume_nonexpansive. error_estimate is the time-integrated Hermitian defect estimate, while endpoint_defect_estimate keeps the final-time sampled defect. Real vector spaces require real time. Complex vector spaces also accept complex time, so exp(-i t H) v can use the Hermitian Lanczos projection without hiding the phase in the operator.

Template Parameters
ScalarReal or complex vector-field scalar type with projected dense LAPACK coverage.
VectorOpaque vector type.
OpsMatrix-free operation provider.

◆ krylov_space() [1/2]

template<RealOrComplex S, class Ops , class V >
requires (!has_runtime_precision_v<S>) && requires(Ops& ops, V&& source) { ops.prototype_view(std::forward<V>(source)); }
auto uni20::krylov::krylov_space ( Ops &  ops,
V &&  source 
)

Bind fixed-scalar vector operations at native precision.

◆ krylov_space() [2/2]

template<RealOrComplex S, class Ops , class V >
requires requires(Ops& ops, V&& source) { ops.prototype_view(std::forward<V>(source)); }
auto uni20::krylov::krylov_space ( Ops &  ops,
V &&  source,
Precision  p 
)

Bind vector operations and an allocation prototype to finite precision.

ops.prototype_view(source) produces a descriptor retained by value. The adapter accepts temporary borrowed views, rejects temporary owners, and allocates owning work vectors from the descriptor.

◆ lacpy()

template<typename Scalar >
void uni20::krylov::lacpy ( uni20::DenseMatrix< Scalar > &  destination,
uni20::DenseMatrix< Scalar > const &  source,
MatrixFill  fill 
)

Copy a selected region of a local dense matrix.

Template Parameters
ScalarElement type.
Parameters
destinationDestination matrix with the same shape as source.
sourceSource matrix.
fillRegion to copy.

◆ laset()

template<typename Scalar >
void uni20::krylov::laset ( uni20::DenseMatrix< Scalar > &  matrix,
Scalar const &  diagonal,
Scalar const &  off_diagonal,
MatrixFill  fill 
)

Set a selected region of a local dense matrix.

Template Parameters
ScalarElement type.
Parameters
matrixMatrix to update.
diagonalValue written on the diagonal.
off_diagonalValue written away from the diagonal.
fillRegion to set.

◆ map_symmetric_transformed_eigenvalue()

template<uni20::Real Scalar>
Scalar uni20::krylov::map_symmetric_transformed_eigenvalue ( Scalar  transformed_value,
SymmetricSpectralTransformOptions< Scalar > const &  options 
)

Map a native symmetric transformed Ritz value back to the original eigenvalue scale.

Template Parameters
ScalarReal or complex vector-field scalar type.
Parameters
transformed_valueRitz value of the caller-supplied OP.
optionsSpectral transform represented by OP.
Returns
Eigenvalue in the original symmetric problem.

◆ metric_inner_product_or_apply()

template<typename Scalar , typename Vector , typename MetricOps , typename BOps , typename InnerOps >
Scalar uni20::krylov::metric_inner_product_or_apply ( MetricOps &  metric_ops,
BOps &  b_ops,
InnerOps &  inner_ops,
Vector const &  x,
Vector const &  y,
Vector &  scratch 
)

Evaluate a metric inner product, using a backend override when available.

If metric_ops has metric_inner_product(x, y), that operation is used directly. Otherwise the default computes B*y into scratch with b_ops and returns inner_ops.inner_product(x, scratch).

◆ nonsymmetric_krylov_exponential_action()

template<uni20::LapackScalar Scalar, typename TimeScalar , typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
requires (std::constructible_from<uni20::make_real_t<Scalar>, TimeScalar> || (uni20::Complex<Scalar> && std::constructible_from<Scalar, TimeScalar>))
KrylovExponentialResult< Scalar, Vector > uni20::krylov::nonsymmetric_krylov_exponential_action ( Ops &  ops,
Vector const &  initial,
TimeScalar  time,
KrylovExponentialParams< uni20::make_real_t< Scalar > > const &  params = {} 
)

Approximate exp(t A) v for a nonsymmetric matrix-free operator.

Builds a full-reorthogonalized Arnoldi projection H_m, evaluates exp(t H_m) with the current CPU dense Padé backend, and returns ||v|| V_m exp(t H_m) e_1. This covers real and complex nonsymmetric operators without inspecting vector storage. Complex vector spaces also accept complex time.

Template Parameters
ScalarReal or complex vector-field scalar type with projected dense LAPACK coverage.
VectorOpaque vector type.
OpsMatrix-free operation provider.

◆ norm_or_inner_product()

template<typename Scalar , typename Vector , typename Ops >
uni20::make_real_t< Scalar > uni20::krylov::norm_or_inner_product ( Ops &  ops,
Vector const &  x 
)

Evaluate a vector norm, using a backend override when available.

The fallback computes sqrt(max(0, real(inner_product(x, x)))). The result type is the real counterpart of Scalar, so complex vector spaces return a real norm without duplicating scalar-type metadata in the matrix-free interface.

◆ plan_symmetric_restart()

template<uni20::Real Scalar>
SymmetricRestartPlan< Scalar > uni20::krylov::plan_symmetric_restart ( SymmetricEigenParams< Scalar > const &  params,
std::vector< Scalar > const &  values,
std::vector< Scalar > const &  residual_bounds,
int  converged_count 
)

Adjust restart dimensions for implicit-restart edge cases.

The restart protects unwanted Ritz values whose residual estimates are exactly zero, because they indicate a split-off leading block that should not be removed by shifting. It also increases the retained block when some, but not all, requested Ritz values have converged, which prevents stagnation from repeatedly applying too many shifts.

Template Parameters
ScalarReal scalar type.
Parameters
paramsSolver parameters defining nev, optional n_keep, and selector.
valuesProjected Ritz values.
residual_boundsRitz residual estimates with the same length as values.
converged_countNumber of currently converged requested Ritz values.
Returns
Adjusted restart dimensions.

◆ projected_departure_from_normality()

template<uni20::RealOrComplex Scalar>
uni20::make_real_t< Scalar > uni20::krylov::projected_departure_from_normality ( uni20::DenseMatrix< Scalar > const &  matrix)

Measure departure from normality of a projected matrix.

Returns ||H^* H - H H^*||_F / max(1, ||H||_F^2). The value is zero for normal projected matrices and grows as the projected Hessenberg matrix becomes non-normal. This is a diagnostic of the local projected problem only; it does not inspect the original matrix-free operator.

Template Parameters
ScalarReal or complex scalar type.
Parameters
matrixSquare projected matrix.
Returns
Scale-normalized Frobenius departure from normality.

◆ real_bidiagonal_left_orthogonal_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_bidiagonal_left_orthogonal_factor ( RealBidiagonalReduction< Scalar > const &  reduction)

Materialize the left orthogonal factor Q from a real bidiagonal reduction.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact bidiagonal reduction returned by real_bidiagonal_reduction.
Returns
Full Q factor satisfying A = Q * B * P^T.

◆ real_bidiagonal_reduction()

template<uni20::LapackReal Scalar>
RealBidiagonalReduction< Scalar > uni20::krylov::real_bidiagonal_reduction ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Reduce a dense real matrix to bidiagonal form through LAPACK gebrd.

Returns the clean bidiagonal matrix plus LAPACK's compact Householder storage. For an m-by-n input, the decomposition is A = Q * B * P^T, where B is upper bidiagonal if m >= n and lower bidiagonal otherwise.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to reduce.
Returns
Bidiagonal form plus compact Householder reflectors.

◆ real_bidiagonal_right_orthogonal_factor_transpose()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_bidiagonal_right_orthogonal_factor_transpose ( RealBidiagonalReduction< Scalar > const &  reduction)

Materialize the right transposed factor P^T from a real bidiagonal reduction.

This follows LAPACK ‘orgbr('P’), which generatesP^T, notP. \tparam Scalar Real scalar type satisfyinguni20::LapackReal. \param reduction Compact bidiagonal reduction returned by real_bidiagonal_reduction. \return FullP^Tfactor satisfyingA = Q * B * P^T`.

◆ real_bidiagonal_singular_values() [1/2]

template<uni20::LapackReal Scalar>
std::vector< Scalar > uni20::krylov::real_bidiagonal_singular_values ( RealBidiagonalReduction< Scalar > const &  reduction)

Compute singular values from a compact real bidiagonal reduction.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact bidiagonal reduction returned by real_bidiagonal_reduction.
Returns
Singular values in decreasing order.

◆ real_bidiagonal_singular_values() [2/2]

template<uni20::LapackReal Scalar>
std::vector< Scalar > uni20::krylov::real_bidiagonal_singular_values ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  offdiagonal,
bool  upper = true 
)

Compute singular values of a real bidiagonal matrix through LAPACK bdsqr.

The singular values are returned in decreasing order. The offdiagonal has length diagonal.size() - 1 unless the diagonal is empty.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the bidiagonal matrix.
offdiagonalSuperdiagonal entries if upper is true, otherwise subdiagonal entries.
upperWhether the bidiagonal matrix is upper or lower bidiagonal.
Returns
Singular values in decreasing order.

◆ real_bidiagonal_svd() [1/2]

template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > uni20::krylov::real_bidiagonal_svd ( RealBidiagonalReduction< Scalar > const &  reduction,
bool  compute_vectors 
)

Compute the SVD from a compact real bidiagonal reduction.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact bidiagonal reduction returned by real_bidiagonal_reduction.
compute_vectorsWhether to compute explicit singular vectors.
Returns
Bidiagonal singular values and, optionally, explicit singular vectors.

◆ real_bidiagonal_svd() [2/2]

template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > uni20::krylov::real_bidiagonal_svd ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  offdiagonal,
bool  compute_vectors,
bool  upper = true 
)

Compute the SVD of a real bidiagonal matrix through LAPACK bdsdc.

The singular values are returned in decreasing order. If compute_vectors is true, u and vt are n-by-n column-major matrices satisfying B = u * diag(s) * vt, where B is the input upper or lower bidiagonal matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the bidiagonal matrix.
offdiagonalSuperdiagonal entries if upper is true, otherwise subdiagonal entries.
compute_vectorsWhether to compute explicit singular vectors.
upperWhether the bidiagonal matrix is upper or lower bidiagonal.
Returns
Singular values and, optionally, explicit singular vectors.

◆ real_bidiagonal_svd_index_range() [1/2]

template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > uni20::krylov::real_bidiagonal_svd_index_range ( RealBidiagonalReduction< Scalar > const &  reduction,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors 
)

Compute a selected-index SVD from a compact real bidiagonal reduction.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact bidiagonal reduction returned by real_bidiagonal_reduction.
first_indexFirst 0-based decreasing singular-value index to compute.
last_indexLast 0-based decreasing singular-value index to compute.
compute_vectorsWhether to compute explicit singular vectors.
Returns
Selected singular values and, optionally, explicit singular vectors.

◆ real_bidiagonal_svd_index_range() [2/2]

template<uni20::LapackReal Scalar>
RealBidiagonalSvd< Scalar > uni20::krylov::real_bidiagonal_svd_index_range ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  offdiagonal,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors,
bool  upper = true 
)

Compute a selected-index SVD of a real bidiagonal matrix through LAPACK bdsvdx.

Selects singular triplets by 0-based inclusive index in decreasing singular-value order. If compute_vectors is true, u is n-by-m and vt is m-by-n, where m is the number of selected singular values. The selected contribution is u * diag(s) * vt.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the bidiagonal matrix.
offdiagonalSuperdiagonal entries if upper is true, otherwise subdiagonal entries.
first_indexFirst 0-based decreasing singular-value index to compute.
last_indexLast 0-based decreasing singular-value index to compute.
compute_vectorsWhether to compute explicit singular vectors.
upperWhether the bidiagonal matrix is upper or lower bidiagonal.
Returns
Selected singular values and, optionally, explicit singular vectors.

◆ real_compact_lq_factorization()

template<uni20::LapackReal Scalar>
RealCompactLqFactorization< Scalar > uni20::krylov::real_compact_lq_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a compact dense real LQ factorization through LAPACK gelqf.

Stores Householder reflectors and scalar factors in LAPACK's compact LQ representation. Use apply_real_lq_factor to apply the encoded orthogonal factor without explicitly materializing Q.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Compact LQ reflector data and scalar factors.

◆ real_compact_ql_factorization()

template<uni20::LapackReal Scalar>
RealCompactQlFactorization< Scalar > uni20::krylov::real_compact_ql_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a compact dense real QL factorization through LAPACK geqlf.

Stores Householder reflectors and scalar factors in LAPACK's compact QL representation. Use apply_real_ql_factor to apply the encoded orthogonal factor without explicitly materializing Q.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Compact QL reflector data and scalar factors.

◆ real_compact_qr_factorization()

template<uni20::LapackReal Scalar>
RealCompactQrFactorization< Scalar > uni20::krylov::real_compact_qr_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a compact dense real QR factorization through LAPACK geqrf.

Stores Householder reflectors and scalar factors in LAPACK's compact QR representation. Use apply_real_qr_factor to apply the encoded orthogonal factor without explicitly materializing Q.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Compact QR reflector data and scalar factors.

◆ real_compact_rq_factorization()

template<uni20::LapackReal Scalar>
RealCompactRqFactorization< Scalar > uni20::krylov::real_compact_rq_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a compact dense real RQ factorization through LAPACK gerqf.

Stores Householder reflectors and scalar factors in LAPACK's compact RQ representation. Use apply_real_rq_factor to apply the encoded orthogonal factor without explicitly materializing Q.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Compact RQ reflector data and scalar factors.

◆ real_dense_inverse()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_dense_inverse ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Invert a dense real square matrix through LAPACK getrf and getri.

The input matrix is copied by value and overwritten by LAPACK. The returned matrix stores the inverse.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix to invert.
Returns
Dense inverse matrix.

◆ real_dense_solve_linear_system()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_dense_solve_linear_system ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a dense real linear system through LAPACK gesv.

Solves A * X = B for one or more dense right-hand sides. The coefficient and right-hand-side matrices are copied by value and may be overwritten by LAPACK. The returned matrix stores X.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_divide_and_conquer_svd_least_squares()

template<uni20::LapackReal Scalar>
RealSvdLeastSquares< Scalar > uni20::krylov::real_divide_and_conquer_svd_least_squares ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
Scalar  rcond = Scalar{100} * uni20::numeric_limits<Scalar>::epsilon() 
)

Solve a dense real divide-and-conquer SVD least-squares problem through LAPACK gelsd.

Solves A * X = B using a divide-and-conquer singular value decomposition. The returned singular values are sorted in descending order, and the numerical rank is determined by rcond.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal rectangular coefficient matrix A.
right_hand_sidesDense right-hand-side matrix B with matching row count.
rcondRelative singular-value threshold used by LAPACK to determine rank.
Returns
Dense solution, numerical rank, and singular values of A.

◆ real_equilibration()

template<uni20::LapackReal Scalar>
RealEquilibration< Scalar > uni20::krylov::real_equilibration ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute dense real row/column equilibration factors through LAPACK geequ.

Returns row scales R and column scales C suitable for forming diag(R) * A * diag(C), along with LAPACK's scale-condition diagnostics and maximum absolute matrix entry.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal dense matrix.
Returns
Row and column scaling factors plus equilibration diagnostics.

◆ real_expert_linear_solve()

template<uni20::LapackReal Scalar>
RealExpertLinearSolve< Scalar > uni20::krylov::real_expert_linear_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a dense real linear system with LAPACK gesvx diagnostics.

Solves A * X = B and returns the solution, LU factors, pivot metadata, reciprocal condition estimate, componentwise backward errors, forward error bounds, and equilibration/condition diagnostics reported by LAPACK. The current wrapper requests a fresh factorization (‘FACT='N’) and does not expose LAPACK's transpose or caller-supplied equilibration modes. \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
coefficientsReal square coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution and LAPACK expert-driver diagnostics.

◆ real_general_band_equilibration()

template<uni20::LapackReal Scalar>
RealEquilibration< Scalar > uni20::krylov::real_general_band_equilibration ( RealGeneralBandMatrix< Scalar >  band_matrix)

Compute real general-band row/column equilibration factors through LAPACK gbequ.

Returns row scales R and column scales C suitable for forming diag(R) * A * diag(C), along with LAPACK's scale-condition diagnostics and maximum absolute matrix entry. The band matrix must use the factor-storage layout returned by real_general_band_from_dense.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
band_matrixReal square general-band matrix in LAPACK factor-storage layout.
Returns
Row and column scaling factors plus equilibration diagnostics.

◆ real_general_band_expert_linear_solve()

template<uni20::LapackReal Scalar>
RealGeneralBandExpertLinearSolve< Scalar > uni20::krylov::real_general_band_expert_linear_solve ( RealGeneralBandMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve a real general-band linear system with LAPACK gbsvx diagnostics.

Solves op(A) * X = B and returns the solution, banded LU factors, pivot metadata, reciprocal condition estimate, componentwise backward errors, forward error bounds, and condition diagnostics reported by LAPACK. The current wrapper requests a fresh factorization (‘FACT='N’). \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
coefficientsReal square general-band coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the coefficient matrix.
Returns
Banded solution and LAPACK expert-driver diagnostics.

◆ real_general_band_factorization()

template<uni20::LapackReal Scalar>
RealGeneralBandFactorization< Scalar > uni20::krylov::real_general_band_factorization ( RealGeneralBandMatrix< Scalar >  matrix)

Compute a real general-band LU factorization through LAPACK gbtrf.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square general-band matrix in LAPACK factor-storage layout.
Returns
Banded LU factors and row-pivot metadata.

◆ real_general_band_from_dense()

template<uni20::LapackReal Scalar>
RealGeneralBandMatrix< Scalar > uni20::krylov::real_general_band_from_dense ( detail::ColumnMajorLapackMatrix< Scalar > const &  matrix,
std::size_t  lower_bandwidth,
std::size_t  upper_bandwidth 
)

Pack a dense real square matrix into LAPACK general-band factor storage.

Entries outside the requested band are dropped. The returned storage has 2 * lower_bandwidth + upper_bandwidth + 1 rows so it can be passed directly to gbsv, gbtrf, and gbtrs.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix to pack.
lower_bandwidthNumber of stored subdiagonals.
upper_bandwidthNumber of stored superdiagonals.
Returns
General-band matrix in LAPACK factor-storage layout.

◆ real_general_band_matrix_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_general_band_matrix_norm ( RealGeneralBandMatrix< Scalar >  band_matrix,
MatrixNorm  norm 
)

Compute a real general-band matrix norm through LAPACK langb.

The band matrix must use the factor-storage layout returned by real_general_band_from_dense. Only the original matrix band is referenced; fill rows reserved for factorization are ignored.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
band_matrixReal general-band matrix in LAPACK factor-storage layout.
normMatrix norm to compute.
Returns
Requested band-matrix norm.

◆ real_general_band_one_norm_reciprocal_condition_number() [1/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_general_band_one_norm_reciprocal_condition_number ( RealGeneralBandFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate a real general-band one-norm reciprocal condition number through LAPACK gbcon.

Uses an existing banded LU factorization. The supplied matrix norm must be the one-norm of the original unfactored band matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_general_band_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_general_band_one_norm_reciprocal_condition_number() [2/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_general_band_one_norm_reciprocal_condition_number ( RealGeneralBandMatrix< Scalar >  matrix)

Estimate a real general-band one-norm reciprocal condition number.

Computes the band one-norm, factors the matrix with LAPACK gbtrf, and estimates the reciprocal condition number with LAPACK gbcon.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square general-band matrix in LAPACK factor-storage layout.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_general_band_power_of_two_equilibration()

template<uni20::LapackReal Scalar>
RealEquilibration< Scalar > uni20::krylov::real_general_band_power_of_two_equilibration ( RealGeneralBandMatrix< Scalar >  band_matrix)

Compute power-of-two real general-band equilibration factors through LAPACK gbequb.

Returns row and column scale factors constrained to radix powers by LAPACK, along with scale-condition diagnostics and the maximum absolute matrix entry.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
band_matrixReal square general-band matrix in LAPACK factor-storage layout.
Returns
Row and column scaling factors plus equilibration diagnostics.

◆ real_general_band_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_general_band_refined_solve ( RealGeneralBandMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve and refine a real general-band system through LAPACK gbrfs.

Computes a banded LU factorization, solves op(A) * X = B, then applies iterative refinement and returns LAPACK's forward and backward error estimates. The original band matrix is retained for the refinement residual calculation.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square general-band coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the coefficient matrix.
Returns
Refined solution and LAPACK error estimates.

◆ real_general_band_solve() [1/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_general_band_solve ( RealGeneralBandFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve using an existing real general-band LU factorization through LAPACK gbtrs.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_general_band_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the original coefficient matrix.
Returns
Dense solution matrix.

◆ real_general_band_solve() [2/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_general_band_solve ( RealGeneralBandMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a real general-band linear system through LAPACK gbsv.

Solves A * X = B for one or more dense right-hand sides. The band matrix must use LAPACK factor-storage layout.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square general-band coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_general_tridiagonal_expert_linear_solve()

template<uni20::LapackReal Scalar>
RealGeneralTridiagonalExpertLinearSolve< Scalar > uni20::krylov::real_general_tridiagonal_expert_linear_solve ( RealGeneralTridiagonalMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve a real general-tridiagonal linear system with LAPACK gtsvx diagnostics.

Solves op(A) * X = B and returns the solution, tridiagonal LU factors, pivot metadata, reciprocal condition estimate, componentwise backward errors, forward error bounds, and condition diagnostics reported by LAPACK. The current wrapper requests a fresh factorization (‘FACT='N’). \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
coefficientsReal square general tridiagonal coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the coefficient matrix.
Returns
Solution, factorization, and diagnostics.

◆ real_general_tridiagonal_factorization()

template<uni20::LapackReal Scalar>
RealGeneralTridiagonalFactorization< Scalar > uni20::krylov::real_general_tridiagonal_factorization ( RealGeneralTridiagonalMatrix< Scalar >  matrix)

Compute a real general tridiagonal LU factorization through LAPACK gttrf.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square general tridiagonal matrix.
Returns
Tridiagonal LU factors and row-pivot metadata.

◆ real_general_tridiagonal_from_dense()

template<uni20::LapackReal Scalar>
RealGeneralTridiagonalMatrix< Scalar > uni20::krylov::real_general_tridiagonal_from_dense ( detail::ColumnMajorLapackMatrix< Scalar > const &  matrix)

Extract real general tridiagonal storage from a dense matrix.

The diagonal, first subdiagonal, and first superdiagonal are copied. Entries outside the tridiagonal band are ignored.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square tridiagonal matrix.
Returns
General tridiagonal matrix storage suitable for LAPACK gtsv and gttrf.

◆ real_general_tridiagonal_one_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_general_tridiagonal_one_norm ( RealGeneralTridiagonalMatrix< Scalar > const &  matrix)

Compute the one-norm of a real general tridiagonal matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square general tridiagonal matrix.
Returns
Matrix one-norm.

◆ real_general_tridiagonal_one_norm_reciprocal_condition_number() [1/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_general_tridiagonal_one_norm_reciprocal_condition_number ( RealGeneralTridiagonalFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate a real general-tridiagonal one-norm reciprocal condition number through LAPACK gtcon.

Uses an existing tridiagonal LU factorization. The supplied matrix norm must be the one-norm of the original unfactored tridiagonal matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_general_tridiagonal_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_general_tridiagonal_one_norm_reciprocal_condition_number() [2/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_general_tridiagonal_one_norm_reciprocal_condition_number ( RealGeneralTridiagonalMatrix< Scalar >  matrix)

Estimate a real general-tridiagonal one-norm reciprocal condition number from a matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square general tridiagonal matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_general_tridiagonal_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_general_tridiagonal_refined_solve ( RealGeneralTridiagonalMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve and refine a real general-tridiagonal linear system through LAPACK gtrfs.

Computes an initial solution using gttrs, then refines it with gtrfs and returns LAPACK's forward and backward error estimates.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square general tridiagonal coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the coefficient matrix.
Returns
Solution and error-bound diagnostics.

◆ real_general_tridiagonal_solve() [1/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_general_tridiagonal_solve ( RealGeneralTridiagonalFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve using an existing real general tridiagonal LU factorization through LAPACK gttrs.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_general_tridiagonal_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the original coefficient matrix.
Returns
Dense solution matrix.

◆ real_general_tridiagonal_solve() [2/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_general_tridiagonal_solve ( RealGeneralTridiagonalMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a real general tridiagonal linear system through LAPACK gtsv.

Solves A * X = B for one or more dense right-hand sides.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square general tridiagonal coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_generalized_hessenberg_reduction()

template<uni20::LapackReal Real>
RealGeneralizedHessenbergReduction< Real > uni20::krylov::real_generalized_hessenberg_reduction ( detail::ColumnMajorLapackMatrix< Real >  matrix,
detail::ColumnMajorLapackMatrix< Real >  upper_triangular_metric,
bool  compute_vectors 
)

Reduce a real matrix pencil to generalized upper Hessenberg form through LAPACK gghrd.

LAPACK gghrd assumes the second matrix is already upper triangular. This helper preserves that boundary: callers that have a general second matrix should triangularize it explicitly before using this lower-level QZ building block. The reduction satisfies A = Q * H * Z^T and B = Q * T * Z^T when vectors are requested.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix A in column-major local storage.
upper_triangular_metricReal upper-triangular square matrix B.
compute_vectorsWhether to compute the left and right orthogonal transformations.
Returns
Generalized upper Hessenberg forms and optional orthogonal factors.

◆ real_generalized_hessenberg_schur()

template<uni20::LapackReal Real>
RealGeneralizedSchurDecomposition< Real > uni20::krylov::real_generalized_hessenberg_schur ( detail::ColumnMajorLapackMatrix< Real >  hessenberg,
detail::ColumnMajorLapackMatrix< Real >  upper_triangular_metric,
bool  compute_vectors 
)

Compute generalized real Schur form from a generalized Hessenberg pencil through LAPACK hgeqz.

LAPACK hgeqz assumes the first matrix is upper Hessenberg and the second matrix is upper triangular. This helper preserves that boundary for projected QZ pipelines that have already called gghrd. When vectors are requested, the returned forms satisfy H = Q * S * Z^T and T = Q * P * Z^T.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
hessenbergReal upper-Hessenberg square matrix H.
upper_triangular_metricReal upper-triangular square matrix T.
compute_vectorsWhether to compute left and right generalized Schur vectors.
Returns
Generalized Schur forms, optional Schur vectors, and projective eigenvalue data.

◆ real_generalized_nonsymmetric_balance()

Balance a dense real nonsymmetric matrix pencil through LAPACK ggbal.

The input matrices are copied by value and overwritten with the balanced pencil. The returned balanced interval is zero-based and half-open; pass the full result to real_generalized_nonsymmetric_balance_backtransform_right_vectors to backtransform real right eigenvectors of the balanced pencil.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix A in column-major local storage.
metricReal square matrix B in column-major local storage.
jobBalancing operation to apply.
Returns
Balanced pencil, LAPACK left/right scale data, and balanced active interval.

◆ real_generalized_nonsymmetric_balance_backtransform_right_vectors()

template<uni20::LapackReal Real>
detail::ColumnMajorLapackMatrix< Real > uni20::krylov::real_generalized_nonsymmetric_balance_backtransform_right_vectors ( detail::ColumnMajorLapackMatrix< Real >  vectors,
RealGeneralizedNonsymmetricBalance< Real > const &  balance,
RealNonsymmetricBalanceJob  job = RealNonsymmetricBalanceJob::Both 
)

Backtransform real right eigenvectors after generalized pencil balancing.

The input vectors use LAPACK's real storage convention, so complex conjugate pairs are still represented by adjacent real columns. Use this before unpacking those columns into complex vectors.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
vectorsReal right eigenvector columns of the balanced pencil.
balanceBalancing metadata returned by real_generalized_nonsymmetric_balance.
jobThe same balancing operation used for the pencil.
Returns
Real right eigenvector columns backtransformed to the original pencil.

◆ real_generalized_nonsymmetric_eigensystem()

template<uni20::LapackReal Real>
RealGeneralizedNonsymmetricEigensystem< Real > uni20::krylov::real_generalized_nonsymmetric_eigensystem ( detail::ColumnMajorLapackMatrix< Real >  matrix,
detail::ColumnMajorLapackMatrix< Real >  metric,
bool  compute_right_vectors 
)

Solve a dense real generalized nonsymmetric eigensystem through LAPACK ggev.

Solves the matrix pencil A * x = lambda * B * x. LAPACK reports generalized eigenvalues as projective pairs alpha / beta; this wrapper preserves both alpha and beta and also stores the ratio in eigenvalues. If right eigenvectors are requested, real eigenvectors are returned as complex vectors with zero imaginary part, and complex conjugate pairs are unpacked from LAPACK's adjacent real-vector representation.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix A in column-major local storage.
metricReal square matrix B in column-major local storage.
compute_right_vectorsWhether to compute right eigenvectors.
Returns
Projective eigenvalue data and, optionally, right eigenvectors.

◆ real_generalized_nonsymmetric_expert_eigensystem()

template<uni20::LapackReal Real>
RealGeneralizedNonsymmetricExpertEigensystem< Real > uni20::krylov::real_generalized_nonsymmetric_expert_eigensystem ( detail::ColumnMajorLapackMatrix< Real >  matrix,
detail::ColumnMajorLapackMatrix< Real >  metric,
bool  compute_right_vectors 
)

Solve a dense real generalized nonsymmetric eigensystem through LAPACK ggevx.

Solves the matrix pencil A * x = lambda * B * x with balancing (‘BALANC='B’) and reciprocal condition estimates for both eigenvalues and right eigenvectors (SENSE='B'). It computes left and right eigenvectors internally because LAPACK needs them for these estimates. The wrapper preserves LAPACK's projective alpha / betaeigenvalue representation and stores finite ratios ineigenvalues. \tparam Real Real scalar type satisfyinguni20::LapackReal. \param matrix Real square matrixAin column-major local storage. \param metric Real square matrixB` in column-major local storage.

Parameters
compute_right_vectorsWhether to return right eigenvectors.
Returns
Projective eigenvalue data, optional right eigenvectors, balancing data, and reciprocal condition estimates.

◆ real_generalized_schur()

template<uni20::LapackReal Real>
RealGeneralizedSchurDecomposition< Real > uni20::krylov::real_generalized_schur ( detail::ColumnMajorLapackMatrix< Real >  matrix,
detail::ColumnMajorLapackMatrix< Real >  metric,
bool  compute_vectors 
)

Compute the generalized real Schur decomposition of a matrix pencil through LAPACK gges.

Computes unsorted QZ form for A - lambda B. LAPACK overwrites matrix with the quasi-triangular generalized Schur form S and metric with the upper-triangular form T. Generalized eigenvalues are preserved as projective pairs alpha / beta, with finite ratios also stored in eigenvalues.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix A in column-major local storage.
metricReal square matrix B in column-major local storage.
compute_vectorsWhether to compute left and right generalized Schur vectors.
Returns
Generalized Schur forms, optional Schur vectors, and projective eigenvalue data.

◆ real_generalized_schur_condition_estimates()

template<uni20::LapackReal Real>
RealGeneralizedSchurConditionEstimates< Real > uni20::krylov::real_generalized_schur_condition_estimates ( RealGeneralizedSchurDecomposition< Real >  decomposition)

Estimate generalized Schur eigenvalue and eigenvector conditioning through LAPACK tgsna.

Computes left and right generalized Schur eigenvectors internally with tgevc, then estimates reciprocal condition numbers for all eigenpairs of the generalized Schur pencil.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionGeneralized real Schur decomposition whose forms are used.
Returns
Reciprocal generalized eigenvalue and eigenvector condition estimates.

◆ real_generalized_schur_right_eigenvectors()

template<uni20::LapackReal Real>
RealGeneralizedSchurRightEigenvectors< Real > uni20::krylov::real_generalized_schur_right_eigenvectors ( RealGeneralizedSchurDecomposition< Real >  decomposition)

Compute right eigenvectors of a generalized real Schur form through LAPACK tgevc.

The returned vectors solve S v = lambda T v for the generalized Schur forms S and T. They are not multiplied by the right Schur vectors, so callers that need eigenvectors of the original pencil must backtransform them separately.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionGeneralized real Schur decomposition whose forms are used.
Returns
Complex right eigenvectors of the generalized Schur form and the number computed.

◆ real_generalized_schur_selected_subspace()

template<uni20::LapackReal Real>
RealGeneralizedSchurSelectedSubspace< Real > uni20::krylov::real_generalized_schur_selected_subspace ( RealGeneralizedSchurDecomposition< Real >  decomposition,
std::vector< std::size_t > const &  selected_blocks 
)

Move selected generalized real Schur blocks to the leading deflating subspace and estimate conditioning.

Uses LAPACK tgsen with IJOB=4, returning lower bounds for the left/right projection quantities (PL, PR) and F-norm estimates of Difu and Difl. Selection is by real Schur block, so real-arithmetic 2x2 complex-conjugate blocks cannot be split.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionGeneralized real Schur decomposition to reorder and diagnose.
selected_blocksBlock indices to move into the leading deflating subspace.
Returns
Reordered generalized Schur decomposition and selected-subspace diagnostics.

◆ real_generalized_symmetric_eigensystem()

template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > uni20::krylov::real_generalized_symmetric_eigensystem ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
detail::ColumnMajorLapackMatrix< Scalar >  metric,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense type-1 generalized real symmetric eigensystem through LAPACK sygv.

Solves A * x = lambda * B * x, where A is real symmetric and B is real symmetric positive definite. Eigenvalues are returned in ascending order. If compute_vectors is true, eigenvectors is an n-by-n column-major matrix whose columns are normalized in the B metric.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix A. Only the selected triangle is read.
metricReal symmetric positive definite square matrix B.
compute_vectorsWhether to compute generalized eigenvectors.
triangleTriangle of matrix and metric supplied to LAPACK.
Returns
Eigenvalues and, optionally, generalized eigenvectors.

◆ real_generalized_symmetric_eigensystem_divide_and_conquer()

template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > uni20::krylov::real_generalized_symmetric_eigensystem_divide_and_conquer ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
detail::ColumnMajorLapackMatrix< Scalar >  metric,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense type-1 generalized real symmetric eigensystem through LAPACK sygvd.

Uses the divide-and-conquer generalized symmetric eigensystem driver. Solves A * x = lambda * B * x, where A is real symmetric and B is real symmetric positive definite. Eigenvalues are returned in ascending order. If compute_vectors is true, eigenvectors is an n-by-n column-major matrix whose columns are normalized in the B metric.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix A. Only the selected triangle is read.
metricReal symmetric positive definite square matrix B.
compute_vectorsWhether to compute generalized eigenvectors.
triangleTriangle of matrix and metric supplied to LAPACK.
Returns
Eigenvalues and, optionally, generalized eigenvectors.

◆ real_generalized_symmetric_eigensystem_index_range()

template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > uni20::krylov::real_generalized_symmetric_eigensystem_index_range ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
detail::ColumnMajorLapackMatrix< Scalar >  metric,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a selected dense type-1 generalized real symmetric eigensystem through LAPACK sygvx.

Selects eigenpairs by 0-based inclusive index in ascending eigenvalue order for A * x = lambda * B * x, where A is real symmetric and B is real symmetric positive definite. If compute_vectors is true, eigenvectors is an n-by-m column-major matrix whose columns are normalized in the B metric.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix A. Only the selected triangle is read.
metricReal symmetric positive definite square matrix B.
first_indexFirst 0-based eigenvalue index to compute.
last_indexLast 0-based eigenvalue index to compute.
compute_vectorsWhether to compute selected generalized eigenvectors.
triangleTriangle of matrix and metric supplied to LAPACK.
Returns
Selected eigenvalues and, optionally, selected generalized eigenvectors.

◆ real_hessenberg_orthogonal_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_hessenberg_orthogonal_factor ( RealHessenbergReduction< Scalar > const &  reduction)

Generate the orthogonal factor from a compact real Hessenberg reduction.

The returned matrix is the Q in A = Q * H * Q^T for the result returned by real_hessenberg_reduction.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact Hessenberg reduction returned by real_hessenberg_reduction.
Returns
Dense orthogonal matrix represented by the compact Householder data.

◆ real_hessenberg_reduction()

template<uni20::LapackReal Scalar>
RealHessenbergReduction< Scalar > uni20::krylov::real_hessenberg_reduction ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Reduce a dense real square matrix to upper Hessenberg form through LAPACK gehrd.

Returns both a clean upper Hessenberg matrix and the raw compact Householder storage needed by real_hessenberg_orthogonal_factor. The reduction satisfies A = Q * H * Q^T when Q is generated from the returned compact data.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix to reduce.
Returns
Upper Hessenberg form plus compact Householder reflectors.

◆ real_hessenberg_schur()

template<uni20::LapackReal Scalar>
RealSchurDecomposition< Scalar > uni20::krylov::real_hessenberg_schur ( uni20::DenseMatrix< Scalar >  hessenberg,
bool  compute_vectors 
)

Compute the real Schur decomposition of an upper Hessenberg matrix through LAPACK hseqr.

This helper does not reduce a dense matrix to Hessenberg form. It is intended for projected Arnoldi matrices that are already upper Hessenberg, avoiding an unnecessary gees reduction step.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
hessenbergUpper Hessenberg matrix in column-major local storage.
compute_vectorsWhether to compute Schur vectors of the Hessenberg matrix.
Returns
Real Schur form, optional Schur vectors, eigenvalues, and block metadata.

◆ real_least_squares()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_least_squares ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a dense real least-squares or minimum-norm problem through LAPACK gels.

Solves A * X = B in the least-squares sense for overdetermined systems and the minimum-norm sense for underdetermined systems. The returned matrix has A.cols() rows and B.cols() columns.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal rectangular coefficient matrix A.
right_hand_sidesDense right-hand-side matrix B with matching row count.
Returns
Dense solution matrix X.

◆ real_lq_factorization()

template<uni20::LapackReal Scalar>
RealLqFactorization< Scalar > uni20::krylov::real_lq_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a reduced dense real LQ factorization through LAPACK gelqf and orglq.

Returns A = L * Q, where Q has orthonormal rows and min(rows, cols) rows. L has min(rows, cols) columns.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Reduced LQ factors.

◆ real_lu_factorization()

template<uni20::LapackReal Scalar>
RealLuFactorization< Scalar > uni20::krylov::real_lu_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a dense real LU factorization through LAPACK getrf.

Factorizes a square matrix as P * A = L * U. Pivot rows are returned as 0-based indices.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix to factor.
Returns
LU factors and row-pivot metadata.

◆ real_lu_one_norm_reciprocal_condition_number()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_lu_one_norm_reciprocal_condition_number ( RealLuFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate the one-norm reciprocal condition number from an LU factorization.

Uses LAPACK gecon on an existing LU factorization. The supplied matrix norm must be the one-norm of the original unfactored matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationLU factors returned by real_lu_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_lu_solve()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_lu_solve ( RealLuFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve using an existing dense real LU factorization through LAPACK getrs.

Solves op(A) * X = B, where A is represented by the supplied LU factorization.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationLU factors returned by real_lu_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the original coefficient matrix.
Returns
Dense solution matrix.

◆ real_matrix_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_matrix_norm ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixNorm  norm 
)

◆ real_nonsymmetric_arnoldi_restarted_standard()

template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
NonsymmetricEigenResult< Scalar, Vector > uni20::krylov::real_nonsymmetric_arnoldi_restarted_standard ( Ops &  ops,
Vector const &  initial,
NonsymmetricEigenParams< Scalar > const &  params 
)

Run a restarted native real nonsymmetric Arnoldi solver.

This is a Krylov-Schur style real Arnoldi restart loop. Each cycle expands a real Arnoldi factorization to krylov_dimension, checks Ritz convergence, reorders the projected real Schur form to retain wanted Schur blocks, compresses the opaque basis through matrix-free axpy operations, and resumes expansion from the compressed relation. Complex wanted Ritz values are tolerated while unconverged, then reported through the configured real-mode policy.

Template Parameters
VectorOpaque vector type.
OpsMatrix-free operator/vector operation type.
Parameters
opsMatrix-free vector operations and operator application.
initialInitial residual/start vector.
paramsSolver parameters.
Returns
Selected Ritz values, residual bounds, optional real Ritz vectors, and diagnostics.

◆ real_nonsymmetric_arnoldi_standard()

template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
NonsymmetricEigenResult< Scalar, Vector > uni20::krylov::real_nonsymmetric_arnoldi_standard ( Ops &  ops,
Vector const &  initial,
NonsymmetricEigenParams< Scalar > const &  params 
)

Run the first native non-restarted real nonsymmetric Arnoldi solver.

This Phase 4 entry point keeps the Arnoldi basis and matrix-free operations real, extracts complex projected Ritz values, and reports when wanted Ritz values require complex arithmetic or a future real-Schur two-plane output path.

Template Parameters
VectorOpaque vector type.
OpsMatrix-free operator/vector operation type.
Parameters
opsMatrix-free vector operations and operator application.
initialInitial residual/start vector.
paramsSolver parameters.
Returns
Selected Ritz values, residual bounds, optional real Ritz vectors, and diagnostics.

◆ real_nonsymmetric_balance()

template<uni20::LapackReal Real>
RealNonsymmetricBalance< Real > uni20::krylov::real_nonsymmetric_balance ( detail::ColumnMajorLapackMatrix< Real >  matrix,
RealNonsymmetricBalanceJob  job = RealNonsymmetricBalanceJob::Both 
)

Reorder a layout-right complex Schur decomposition by moving selected entries to the front.

Complex Schur form contains only scalar 1x1 diagonal entries. leading_order names entries in the input decomposition's current order. Entries not named are left after the requested prefix in their original relative order.

Template Parameters
Realfloat or double.
Parameters
decompositionComplex Schur decomposition to reorder.
leading_orderInput entry indices to move to the leading positions.
Returns
Reordered complex Schur decomposition.

◆ real_nonsymmetric_balance_backtransform_right_vectors()

template<uni20::LapackReal Real>
detail::ColumnMajorLapackMatrix< Real > uni20::krylov::real_nonsymmetric_balance_backtransform_right_vectors ( detail::ColumnMajorLapackMatrix< Real >  vectors,
RealNonsymmetricBalance< Real > const &  balance,
RealNonsymmetricBalanceJob  job = RealNonsymmetricBalanceJob::Both 
)

Backtransform real right eigenvectors after real_nonsymmetric_balance.

The input vectors use LAPACK's real storage convention, so complex conjugate pairs are still represented by adjacent real columns. Use this before unpacking those columns into complex vectors.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
vectorsReal right eigenvector columns of the balanced matrix.
balanceBalancing metadata returned by real_nonsymmetric_balance.
jobThe same balancing operation used for the matrix.
Returns
Real right eigenvector columns backtransformed to the original matrix.

◆ real_nonsymmetric_eigensystem()

template<uni20::LapackReal Real>
RealNonsymmetricEigensystem< Real > uni20::krylov::real_nonsymmetric_eigensystem ( uni20::DenseMatrix< Real >  matrix,
bool  compute_right_vectors 
)

◆ real_nonsymmetric_expert_eigensystem()

template<uni20::LapackReal Real>
RealNonsymmetricExpertEigensystem< Real > uni20::krylov::real_nonsymmetric_expert_eigensystem ( detail::ColumnMajorLapackMatrix< Real >  matrix,
bool  compute_right_vectors 
)

Solve a dense real nonsymmetric eigensystem through LAPACK geev.

The input matrix is copied because LAPACK overwrites it. Eigenvalues are returned in LAPACK order. If right eigenvectors are requested, real eigenvectors are returned as complex vectors with zero imaginary part, and complex conjugate pairs are unpacked from LAPACK's adjacent real-vector representation.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix in column-major local storage.
compute_right_vectorsWhether to compute right eigenvectors.
Returns
Complex eigenvalues and, optionally, right eigenvectors.

◆ real_one_norm_reciprocal_condition_number()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_one_norm_reciprocal_condition_number ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Estimate the one-norm reciprocal condition number of a dense real matrix.

Computes the one-norm, factors the matrix with LAPACK getrf, and estimates the reciprocal condition number with LAPACK gecon.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_pivoted_cholesky_factorization()

template<uni20::LapackReal Scalar>
RealPivotedCholeskyFactorization< Scalar > uni20::krylov::real_pivoted_cholesky_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
Scalar  tolerance = Scalar{-1},
MatrixFill  triangle = MatrixFill::Upper 
)

Compute a dense real pivoted Cholesky factorization through LAPACK pstrf.

Computes a complete-pivoting Cholesky factorization of a symmetric positive semidefinite matrix. For upper storage, LAPACK returns P^T A P = U^T U; for lower storage, it returns P^T A P = L L^T. A nonnegative tolerance is used as the stopping threshold; a negative value requests LAPACK's default n * eps * max(diag(A)) threshold.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric positive semidefinite square matrix.
tolerancePivot stopping threshold, or negative for LAPACK's default.
triangleTriangle of matrix supplied to LAPACK.
Returns
Pivoted Cholesky factors, 0-based pivot order, rank, and rank-deficiency flag.

◆ real_pivoted_qr_factorization()

template<uni20::LapackReal Scalar>
RealPivotedQrFactorization< Scalar > uni20::krylov::real_pivoted_qr_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a reduced dense real pivoted QR factorization through LAPACK geqp3.

Returns A * P = Q * R, where Q has orthonormal columns and min(rows, cols) columns. pivot_columns[j] is the original 0-based column index stored in pivoted column j of A * P.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Reduced pivoted QR factors and column pivot order.

◆ real_ql_factorization()

template<uni20::LapackReal Scalar>
RealQlFactorization< Scalar > uni20::krylov::real_ql_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a reduced dense real QL factorization through LAPACK geqlf and orgql.

Returns A = Q * L, where Q has orthonormal columns and min(rows, cols) columns. L has min(rows, cols) rows.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Reduced QL factors.

◆ real_qr_factorization()

template<uni20::LapackReal Scalar>
RealQrFactorization< Scalar > uni20::krylov::real_qr_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a reduced dense real QR factorization through LAPACK geqrf and orgqr.

Returns A = Q * R, where Q has orthonormal columns and min(rows, cols) columns. R has min(rows, cols) rows.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Reduced QR factors.

◆ real_rank_revealing_least_squares()

template<uni20::LapackReal Scalar>
RealRankRevealingLeastSquares< Scalar > uni20::krylov::real_rank_revealing_least_squares ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
Scalar  rcond = Scalar{100} * uni20::numeric_limits<Scalar>::epsilon() 
)

Solve a dense real rank-revealing least-squares problem through LAPACK gelsy.

Solves A * X = B using complete orthogonal factorization with column pivoting. The returned pivot order is 0-based: entry j gives the original column placed at pivoted position j.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal rectangular coefficient matrix A.
right_hand_sidesDense right-hand-side matrix B with matching row count.
rcondRelative threshold used by LAPACK to determine the effective rank.
Returns
Dense solution, numerical rank, and column pivot order.

◆ real_refined_linear_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_refined_linear_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixTranspose  transpose = MatrixTranspose::None 
)

Solve and refine a dense real linear system through LAPACK gerfs.

Computes an LU factorization, solves op(A) * X = B, then applies iterative refinement and returns LAPACK's forward and backward error estimates. The original coefficient matrix is retained for the refinement residual calculation.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
transposeMatrix operation applied to the coefficient matrix.
Returns
Refined solution and LAPACK error estimates.

◆ real_rq_factorization()

template<uni20::LapackReal Scalar>
RealRqFactorization< Scalar > uni20::krylov::real_rq_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute a reduced dense real RQ factorization through LAPACK gerqf and orgrq.

Returns A = R * Q, where Q has orthonormal rows and min(rows, cols) rows. R has min(rows, cols) columns.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to factor.
Returns
Reduced RQ factors.

◆ real_schur()

template<uni20::LapackReal Scalar>
RealSchurDecomposition< Scalar > uni20::krylov::real_schur ( uni20::DenseMatrix< Scalar >  matrix,
bool  compute_vectors 
)

Compute the real Schur decomposition of a column-major DenseMatrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square matrix in current Krylov local storage.
compute_vectorsWhether to compute Schur vectors.
Returns
Real Schur form, optional Schur vectors, eigenvalues, and block metadata.

◆ real_schur_condition_estimates()

template<uni20::LapackReal Scalar>
RealSchurConditionEstimates< Scalar > uni20::krylov::real_schur_condition_estimates ( RealSchurDecomposition< Scalar >  decomposition)

Estimate Schur-form eigenvalue and eigenvector conditioning through LAPACK trsna.

The returned arrays are aligned with decomposition.eigenvalues. This helper asks LAPACK for all eigenpairs and computes the required real-packed left and right Schur eigenvectors internally.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionReal Schur decomposition whose Schur form is used.
Returns
Reciprocal eigenvalue and right-eigenvector condition estimates.

◆ real_schur_layout_right()

template<uni20::LapackReal Scalar>
RightRealSchurDecomposition< Scalar > uni20::krylov::real_schur_layout_right ( RightMatrix< Scalar >  matrix,
bool  compute_vectors 
)

Solve a real symmetric tridiagonal eigensystem through LAPACK stevd.

Uses the divide-and-conquer symmetric tridiagonal eigensystem driver. diagonal has length n; subdiagonal has length n - 1. Eigenvalues are returned in ascending order. If compute_vectors is true, eigenvectors is an n-by-n column-major matrix whose columns are the normalized eigenvectors.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the tridiagonal matrix.
subdiagonalSubdiagonal/superdiagonal entries.
compute_vectorsWhether to compute eigenvectors.
Returns
Eigenvalues and, optionally, eigenvectors.

◆ real_schur_right_eigenvectors()

template<uni20::LapackReal Scalar>
RealSchurRightEigenvectors< Scalar > uni20::krylov::real_schur_right_eigenvectors ( RealSchurDecomposition< Scalar >  decomposition)

Compute right eigenvectors of a real Schur form through LAPACK trevc.

The returned vectors are eigenvectors of decomposition.schur_form. They are not multiplied by the Schur-vector matrix, so callers that need eigenvectors of the original matrix must backtransform them separately.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionReal Schur decomposition whose Schur form is used.
Returns
Complex right eigenvectors of the Schur form and the number computed.

◆ real_schur_selected_subspace()

template<uni20::LapackReal Scalar>
RealSchurSelectedSubspace< Scalar > uni20::krylov::real_schur_selected_subspace ( RealSchurDecomposition< Scalar >  decomposition,
std::vector< std::size_t > const &  selected_blocks 
)

Compute the real Schur decomposition of a layout-right matrix through LAPACK gees.

The public wrapper accepts the prototype row-major RightMatrix used by the mdspan-facing LAPACK layer. Internally it copies to a column-major DenseMatrix before calling Fortran LAPACK, so the returned Schur vectors correspond to the logical input matrix rather than its transpose.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.

◆ real_singular_value_decomposition()

template<uni20::LapackReal Scalar>
RealSingularValueDecomposition< Scalar > uni20::krylov::real_singular_value_decomposition ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
bool  compute_vectors 
)

Compute a dense real singular value decomposition through LAPACK gesvd.

Singular values are returned in descending order. If compute_vectors is true, this computes the full decomposition A = U * Sigma * VT, with U stored in left_singular_vectors and VT stored in right_singular_vectors_transpose.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to decompose.
compute_vectorsWhether to compute full left and right singular vectors.
Returns
Singular values and, optionally, full singular-vector matrices.

◆ real_singular_value_decomposition_divide_and_conquer()

template<uni20::LapackReal Scalar>
RealSingularValueDecomposition< Scalar > uni20::krylov::real_singular_value_decomposition_divide_and_conquer ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
bool  compute_vectors 
)

Compute a dense real singular value decomposition through LAPACK gesdd.

Uses the divide-and-conquer SVD driver. Singular values are returned in descending order. If compute_vectors is true, this computes the full decomposition A = U * Sigma * VT, with U stored in left_singular_vectors and VT stored in right_singular_vectors_transpose.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to decompose.
compute_vectorsWhether to compute full left and right singular vectors.
Returns
Singular values and, optionally, full singular-vector matrices.

◆ real_singular_value_decomposition_index_range()

template<uni20::LapackReal Scalar>
RealSingularValueDecomposition< Scalar > uni20::krylov::real_singular_value_decomposition_index_range ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors 
)

Compute a selected-index dense real SVD through LAPACK gesvdx.

Selects singular triplets by 0-based inclusive index in decreasing singular-value order. If compute_vectors is true, this computes the selected contribution A_selected = U * Sigma * VT, with U stored in left_singular_vectors and VT stored in right_singular_vectors_transpose.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal matrix to decompose.
first_indexFirst 0-based decreasing singular-value index to compute.
last_indexLast 0-based decreasing singular-value index to compute.
compute_vectorsWhether to compute selected left and right singular vectors.
Returns
Selected singular values and, optionally, selected singular-vector matrices.

◆ real_svd_least_squares()

template<uni20::LapackReal Scalar>
RealSvdLeastSquares< Scalar > uni20::krylov::real_svd_least_squares ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
Scalar  rcond = Scalar{100} * uni20::numeric_limits<Scalar>::epsilon() 
)

Solve a dense real SVD-based least-squares problem through LAPACK gelss.

Solves A * X = B using a singular value decomposition. The returned singular values are sorted in descending order, and the numerical rank is determined by rcond.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal rectangular coefficient matrix A.
right_hand_sidesDense right-hand-side matrix B with matching row count.
rcondRelative singular-value threshold used by LAPACK to determine rank.
Returns
Dense solution, numerical rank, and singular values of A.

◆ real_sylvester_solve()

template<uni20::LapackReal Scalar>
RealSylvesterSolution< Scalar > uni20::krylov::real_sylvester_solve ( detail::ColumnMajorLapackMatrix< Scalar >  left,
detail::ColumnMajorLapackMatrix< Scalar >  right,
detail::ColumnMajorLapackMatrix< Scalar >  rhs,
int  sign = 1,
MatrixTranspose  transpose_left = MatrixTranspose::None,
MatrixTranspose  transpose_right = MatrixTranspose::None 
)

Solve a dense real Sylvester equation through LAPACK trsyl.

Solves op(A) * X + sign * X * op(B) = scale * C. LAPACK overwrites C with X; this wrapper returns the solution, the scale factor, and whether LAPACK perturbed nearly common eigenvalues while solving.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
leftReal square matrix A.
rightReal square matrix B.
rhsRight-hand side matrix C with dimensions A.rows() by B.rows().
signEquation sign, either +1 or -1.
transpose_leftOperation applied to A.
transpose_rightOperation applied to B.
Returns
Dense Sylvester solution, scale factor, and perturbation diagnostic.

◆ real_symmetric_eigensystem()

template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > uni20::krylov::real_symmetric_eigensystem ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense real symmetric eigensystem through LAPACK syev.

Eigenvalues are returned in ascending order. If compute_vectors is true, eigenvectors is an n-by-n column-major matrix whose columns are the normalized eigenvectors.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix. Only the selected triangle is read.
compute_vectorsWhether to compute eigenvectors.
triangleTriangle of matrix supplied to LAPACK.
Returns
Eigenvalues and, optionally, eigenvectors.

◆ real_symmetric_eigensystem_divide_and_conquer()

template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > uni20::krylov::real_symmetric_eigensystem_divide_and_conquer ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense real symmetric eigensystem through LAPACK syevd.

Uses the divide-and-conquer symmetric eigensystem driver. Eigenvalues are returned in ascending order. If compute_vectors is true, eigenvectors is an n-by-n column-major matrix whose columns are the normalized eigenvectors.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix. Only the selected triangle is read.
compute_vectorsWhether to compute eigenvectors.
triangleTriangle of matrix supplied to LAPACK.
Returns
Eigenvalues and, optionally, eigenvectors.

◆ real_symmetric_eigensystem_index_range()

template<uni20::LapackReal Scalar>
RealSymmetricEigensystem< Scalar > uni20::krylov::real_symmetric_eigensystem_index_range ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a selected dense real symmetric eigensystem through LAPACK syevr.

Selects eigenpairs by 0-based inclusive index in ascending eigenvalue order. If compute_vectors is true, eigenvectors is an n-by-m column-major matrix whose columns are the selected normalized eigenvectors.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix. Only the selected triangle is read.
first_indexFirst 0-based eigenvalue index to compute.
last_indexLast 0-based eigenvalue index to compute.
compute_vectorsWhether to compute selected eigenvectors.
triangleTriangle of matrix supplied to LAPACK.
Returns
Selected eigenvalues and, optionally, selected eigenvectors.

◆ real_symmetric_indefinite_expert_solve()

template<uni20::LapackReal Scalar>
RealSymmetricIndefiniteExpertLinearSolve< Scalar > uni20::krylov::real_symmetric_indefinite_expert_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense real symmetric-indefinite system with LAPACK sysvx diagnostics.

Solves A * X = B using a Bunch-Kaufman factorization and returns the solution, factors, signed pivot-block metadata, reciprocal condition estimate, componentwise backward errors, and forward error bounds reported by LAPACK.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal symmetric square coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
Returns
Dense solution and LAPACK expert-driver diagnostics.

◆ real_symmetric_indefinite_factorization()

template<uni20::LapackReal Scalar>
RealSymmetricIndefiniteFactorization< Scalar > uni20::krylov::real_symmetric_indefinite_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Compute a dense real symmetric-indefinite Bunch-Kaufman factorization through LAPACK sytrf.

Only the selected triangle of matrix is factorized. The signed pivot block metadata is kept in LAPACK's ipiv encoding so it can be reused by sytrs, sytri, syrfs, and sycon wrappers.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix.
triangleTriangle of matrix supplied to LAPACK.
Returns
Bunch-Kaufman factors, signed pivot blocks, and triangle metadata.

◆ real_symmetric_indefinite_inverse()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_indefinite_inverse ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Invert a dense real symmetric-indefinite matrix through LAPACK sytrf and sytri.

Computes a Bunch-Kaufman factorization, inverts it with sytri, and mirrors the selected triangle so the returned matrix is a full dense symmetric inverse.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix.
triangleTriangle of matrix supplied to LAPACK.
Returns
Dense symmetric inverse matrix.

◆ real_symmetric_indefinite_one_norm_reciprocal_condition_number() [1/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_indefinite_one_norm_reciprocal_condition_number ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Estimate a dense real symmetric-indefinite one-norm reciprocal condition number through LAPACK sycon.

Computes a Bunch-Kaufman factorization with sytrf, then estimates 1 / (||A||_1 * ||inv(A)||_1) from the factorization. Only the selected triangle is read, but the one-norm is computed as if the full symmetric matrix were materialized.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric indefinite square matrix.
triangleTriangle of matrix supplied to LAPACK.
Returns
Estimated one-norm reciprocal condition number.

◆ real_symmetric_indefinite_one_norm_reciprocal_condition_number() [2/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_indefinite_one_norm_reciprocal_condition_number ( RealSymmetricIndefiniteFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate a symmetric-indefinite one-norm reciprocal condition number from an existing factorization.

The supplied matrix norm must be the one-norm of the original unfactored symmetric matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationBunch-Kaufman factors returned by real_symmetric_indefinite_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_symmetric_indefinite_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_symmetric_indefinite_refined_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve and refine a dense real symmetric-indefinite system through LAPACK syrfs.

Computes a Bunch-Kaufman factorization, solves A * X = B, then applies iterative refinement and returns LAPACK's forward and backward error estimates. Only the selected triangle of coefficients is read by LAPACK.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal symmetric square coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
Returns
Refined solution and LAPACK error estimates.

◆ real_symmetric_indefinite_solve() [1/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_indefinite_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense real symmetric indefinite system through LAPACK sytrf and sytrs.

Solves A * X = B for one or more dense right-hand sides using a Bunch-Kaufman diagonal-pivoting factorization. The coefficient and right-hand-side matrices are copied by value and may be overwritten by LAPACK. The returned matrix stores X.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal symmetric square coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
Returns
Dense solution matrix.

◆ real_symmetric_indefinite_solve() [2/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_indefinite_solve ( RealSymmetricIndefiniteFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a dense real symmetric-indefinite system from an existing Bunch-Kaufman factorization.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_symmetric_indefinite_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_symmetric_matrix_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_matrix_norm ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixNorm  norm,
MatrixFill  triangle = MatrixFill::Upper 
)

Compute a dense real symmetric matrix norm through LAPACK lansy.

Only the selected triangle of matrix is referenced.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric square matrix.
normMatrix norm to compute.
triangleTriangle of matrix supplied to LAPACK.
Returns
Requested symmetric matrix norm.

◆ real_symmetric_positive_definite_band_expert_linear_solve()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteBandExpertLinearSolve< Scalar > uni20::krylov::real_symmetric_positive_definite_band_expert_linear_solve ( RealSymmetricPositiveDefiniteBandMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a real SPD band linear system with LAPACK pbsvx diagnostics.

Solves A * X = B and returns the solution, band Cholesky factors, reciprocal condition estimate, componentwise backward errors, forward error bounds, equilibration, and condition diagnostics reported by LAPACK. The current wrapper requests a fresh factorization (‘FACT='N’) and does not expose caller-supplied equilibration modes. \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
coefficientsReal SPD band coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Solution, factorization, and diagnostics.

◆ real_symmetric_positive_definite_band_factorization()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteBandFactorization< Scalar > uni20::krylov::real_symmetric_positive_definite_band_factorization ( RealSymmetricPositiveDefiniteBandMatrix< Scalar >  matrix)

Compute a real SPD band Cholesky factorization through LAPACK pbtrf.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square SPD band matrix in LAPACK storage layout.
Returns
SPD band Cholesky factors and storage metadata.

◆ real_symmetric_positive_definite_band_from_dense()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteBandMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_band_from_dense ( detail::ColumnMajorLapackMatrix< Scalar > const &  matrix,
std::size_t  bandwidth,
MatrixFill  triangle = MatrixFill::Upper 
)

Pack a dense real SPD matrix into LAPACK symmetric-band storage.

Entries outside the requested triangle and bandwidth are dropped. The returned storage can be passed directly to pbsv, pbtrf, and pbtrs.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square SPD matrix to pack.
bandwidthNumber of stored offdiagonals.
triangleTriangle of matrix supplied to LAPACK.
Returns
SPD band matrix in LAPACK storage layout.

◆ real_symmetric_positive_definite_band_one_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_band_one_norm ( RealSymmetricPositiveDefiniteBandMatrix< Scalar > const &  matrix)

Compute the one-norm of a real SPD band matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal SPD band matrix in LAPACK storage layout.
Returns
Matrix one-norm.

◆ real_symmetric_positive_definite_band_one_norm_reciprocal_condition_number() [1/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_band_one_norm_reciprocal_condition_number ( RealSymmetricPositiveDefiniteBandFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate a real SPD band one-norm reciprocal condition number through LAPACK pbcon.

Uses an existing SPD band Cholesky factorization. The supplied matrix norm must be the one-norm of the original unfactored band matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_symmetric_positive_definite_band_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_symmetric_positive_definite_band_one_norm_reciprocal_condition_number() [2/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_band_one_norm_reciprocal_condition_number ( RealSymmetricPositiveDefiniteBandMatrix< Scalar >  matrix)

Estimate a real SPD band one-norm reciprocal condition number from a matrix.

Computes the band one-norm, factors the matrix with LAPACK pbtrf, and estimates the reciprocal condition number with LAPACK pbcon.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal SPD band matrix in LAPACK storage layout.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_symmetric_positive_definite_band_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_symmetric_positive_definite_band_refined_solve ( RealSymmetricPositiveDefiniteBandMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve and refine a real SPD band linear system through LAPACK pbrfs.

Computes a band Cholesky factorization, solves A * X = B, then applies iterative refinement and returns LAPACK's forward and backward error estimates.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal SPD band coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Refined solution and LAPACK error estimates.

◆ real_symmetric_positive_definite_band_solve() [1/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_band_solve ( RealSymmetricPositiveDefiniteBandFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve using an existing real SPD band Cholesky factorization through LAPACK pbtrs.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_symmetric_positive_definite_band_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_symmetric_positive_definite_band_solve() [2/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_band_solve ( RealSymmetricPositiveDefiniteBandMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a real SPD band system through LAPACK pbsv.

Solves A * X = B for one or more dense right-hand sides. The band matrix must use LAPACK symmetric positive-definite band storage.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square SPD band coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_symmetric_positive_definite_equilibration()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteEquilibration< Scalar > uni20::krylov::real_symmetric_positive_definite_equilibration ( detail::ColumnMajorLapackMatrix< Scalar >  matrix)

Compute dense real SPD equilibration factors through LAPACK poequ.

Returns diagonal scales S suitable for forming diag(S) * A * diag(S), along with LAPACK's scale-condition diagnostic and maximum absolute diagonal entry.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric positive definite square matrix.
Returns
Symmetric scaling factors plus equilibration diagnostics.

◆ real_symmetric_positive_definite_expert_solve()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteExpertLinearSolve< Scalar > uni20::krylov::real_symmetric_positive_definite_expert_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense real SPD linear system with LAPACK posvx diagnostics.

Solves A * X = B and returns the solution, Cholesky factors, reciprocal condition estimate, componentwise backward errors, forward error bounds, and equilibration/condition diagnostics reported by LAPACK. The current wrapper requests a fresh factorization (‘FACT='N’) and does not expose caller-supplied equilibration modes. \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
coefficientsReal symmetric positive definite square matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
Returns
Dense solution and LAPACK expert-driver diagnostics.

◆ real_symmetric_positive_definite_factorization()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteFactorization< Scalar > uni20::krylov::real_symmetric_positive_definite_factorization ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Compute a dense real SPD Cholesky factorization through LAPACK potrf.

Only the selected triangle of matrix is factorized. The returned factors keep LAPACK's triangular storage.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric positive definite square matrix.
triangleTriangle of matrix supplied to LAPACK.
Returns
Cholesky factors and triangle metadata.

◆ real_symmetric_positive_definite_inverse()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_inverse ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Invert a dense real SPD matrix through LAPACK potrf and potri.

Computes a Cholesky factorization, inverts it with potri, and mirrors the selected triangle so the returned matrix is a full dense symmetric inverse.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric positive definite square matrix.
triangleTriangle of matrix supplied to LAPACK.
Returns
Dense symmetric inverse matrix.

◆ real_symmetric_positive_definite_one_norm_reciprocal_condition_number() [1/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_one_norm_reciprocal_condition_number ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Estimate a dense real SPD one-norm reciprocal condition number through LAPACK pocon.

Computes a Cholesky factorization with potrf, then estimates 1 / (||A||_1 * ||inv(A)||_1) from the factorization. Only the selected triangle is read, but the one-norm is computed as if the full symmetric matrix were materialized.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric positive definite square matrix.
triangleTriangle of matrix supplied to LAPACK.
Returns
Estimated one-norm reciprocal condition number.

◆ real_symmetric_positive_definite_one_norm_reciprocal_condition_number() [2/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_one_norm_reciprocal_condition_number ( RealSymmetricPositiveDefiniteFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate an SPD one-norm reciprocal condition number from an existing Cholesky factorization.

The supplied matrix norm must be the one-norm of the original unfactored symmetric positive definite matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationCholesky factors returned by real_symmetric_positive_definite_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_symmetric_positive_definite_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_symmetric_positive_definite_refined_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve and refine a dense real SPD system through LAPACK porfs.

Computes a Cholesky factorization, solves A * X = B, then applies iterative refinement and returns LAPACK's forward and backward error estimates. Only the selected triangle of coefficients is read by LAPACK.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal symmetric positive definite square matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
Returns
Refined solution and LAPACK error estimates.

◆ real_symmetric_positive_definite_solve() [1/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper 
)

Solve a dense real symmetric positive definite system through LAPACK potrf and potrs.

Solves A * X = B for one or more dense right-hand sides. The coefficient and right-hand-side matrices are copied by value and may be overwritten by LAPACK. The returned matrix stores X.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal symmetric positive definite square matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
Returns
Dense solution matrix.

◆ real_symmetric_positive_definite_solve() [2/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_solve ( RealSymmetricPositiveDefiniteFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a dense real SPD system from an existing Cholesky factorization.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationCholesky factors returned by real_symmetric_positive_definite_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_symmetric_positive_definite_tridiagonal_expert_linear_solve()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteTridiagonalExpertLinearSolve< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_expert_linear_solve ( RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a real SPD tridiagonal linear system with LAPACK ptsvx diagnostics.

Solves A * X = B and returns the solution, SPD tridiagonal factors, reciprocal condition estimate, componentwise backward errors, forward error bounds, and condition diagnostics reported by LAPACK. The current wrapper requests a fresh factorization (‘FACT='N’). \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
coefficientsReal SPD tridiagonal coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Solution, factorization, and diagnostics.

◆ real_symmetric_positive_definite_tridiagonal_factorization()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_factorization ( RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar >  matrix)

Compute a real SPD tridiagonal factorization through LAPACK pttrf.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal SPD tridiagonal matrix.
Returns
SPD tridiagonal Cholesky factors.

◆ real_symmetric_positive_definite_tridiagonal_from_dense()

template<uni20::LapackReal Scalar>
RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_from_dense ( detail::ColumnMajorLapackMatrix< Scalar > const &  matrix)

Extract real SPD tridiagonal storage from a dense matrix.

The diagonal and first subdiagonal are copied. Entries outside the tridiagonal band are ignored.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square SPD tridiagonal matrix.
Returns
Tridiagonal matrix storage suitable for LAPACK ptsv and pttrf.

◆ real_symmetric_positive_definite_tridiagonal_one_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_tridiagonal_one_norm ( RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > const &  matrix)

Compute the one-norm of a real SPD tridiagonal matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal SPD tridiagonal matrix.
Returns
Matrix one-norm.

◆ real_symmetric_positive_definite_tridiagonal_one_norm_reciprocal_condition_number() [1/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_tridiagonal_one_norm_reciprocal_condition_number ( RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > const &  factorization,
Scalar  original_one_norm 
)

Estimate a real SPD tridiagonal one-norm reciprocal condition number through LAPACK ptcon.

Uses an existing SPD tridiagonal factorization. The supplied matrix norm must be the one-norm of the original unfactored tridiagonal matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_symmetric_positive_definite_tridiagonal_factorization.
original_one_normOne-norm of the original coefficient matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_symmetric_positive_definite_tridiagonal_one_norm_reciprocal_condition_number() [2/2]

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_symmetric_positive_definite_tridiagonal_one_norm_reciprocal_condition_number ( RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar >  matrix)

Estimate a real SPD tridiagonal one-norm reciprocal condition number from a matrix.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal SPD tridiagonal matrix.
Returns
Estimate of 1 / (||A||_1 * ||inv(A)||_1).

◆ real_symmetric_positive_definite_tridiagonal_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_refined_solve ( RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve and refine a real SPD tridiagonal linear system through LAPACK ptrfs.

Computes an initial solution using pttrs, then refines it with ptrfs and returns LAPACK's forward and backward error estimates.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal SPD tridiagonal coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Solution and error-bound diagnostics.

◆ real_symmetric_positive_definite_tridiagonal_solve() [1/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_solve ( RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > const &  factorization,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve using an existing real SPD tridiagonal factorization through LAPACK pttrs.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
factorizationFactors returned by real_symmetric_positive_definite_tridiagonal_factorization.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_symmetric_positive_definite_tridiagonal_solve() [2/2]

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_solve ( RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides 
)

Solve a real SPD tridiagonal system through LAPACK ptsv.

Solves A * X = B for one or more dense right-hand sides.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal SPD tridiagonal coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
Returns
Dense solution matrix.

◆ real_symmetric_tridiagonal_orthogonal_factor()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_symmetric_tridiagonal_orthogonal_factor ( RealSymmetricTridiagonalReduction< Scalar > const &  reduction)

Generate the orthogonal factor from a compact real symmetric tridiagonal reduction.

The returned matrix is the Q in A = Q * T * Q^T for the result returned by real_symmetric_tridiagonal_reduction.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
reductionCompact tridiagonal reduction returned by real_symmetric_tridiagonal_reduction.
Returns
Dense orthogonal matrix represented by the compact Householder data.

◆ real_symmetric_tridiagonal_reduction()

template<uni20::LapackReal Scalar>
RealSymmetricTridiagonalReduction< Scalar > uni20::krylov::real_symmetric_tridiagonal_reduction ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper 
)

Reduce a dense real symmetric matrix to tridiagonal form through LAPACK sytrd.

Uses the selected triangle of matrix and returns both a clean symmetric tridiagonal matrix and the compact Householder storage needed by real_symmetric_tridiagonal_orthogonal_factor and apply_real_symmetric_tridiagonal_orthogonal_factor. The reduction satisfies A = Q * T * Q^T when Q is generated from the returned compact data.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal symmetric matrix to reduce.
triangleWhich triangle of matrix contains the symmetric input.
Returns
Tridiagonal form plus compact Householder reflectors.

◆ real_triangular_inverse()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_triangular_inverse ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper,
bool  unit_diagonal = false 
)

Invert a dense real triangular matrix through LAPACK trtri.

The input matrix is copied by value and overwritten by LAPACK. Entries outside the selected triangle are zeroed before returning so the result is an ordinary dense triangular inverse.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square triangular matrix to invert.
triangleTriangle of matrix supplied to LAPACK.
unit_diagonalWhether the triangular diagonal is implicitly unit.
Returns
Dense triangular inverse matrix.

◆ real_triangular_matrix_norm()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_triangular_matrix_norm ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixNorm  norm,
MatrixFill  triangle = MatrixFill::Upper,
bool  unit_diagonal = false 
)

Compute a dense real triangular or trapezoidal matrix norm through LAPACK lantr.

Only the selected triangle/trapezoid of matrix is referenced. When unit_diagonal is true, the diagonal is treated as unit regardless of stored values.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal rectangular matrix.
normMatrix norm to compute.
triangleTriangle or trapezoid of matrix supplied to LAPACK.
unit_diagonalWhether to treat the diagonal as all ones.
Returns
Requested triangular/trapezoidal matrix norm.

◆ real_triangular_one_norm_reciprocal_condition_number()

template<uni20::LapackReal Scalar>
Scalar uni20::krylov::real_triangular_one_norm_reciprocal_condition_number ( detail::ColumnMajorLapackMatrix< Scalar >  matrix,
MatrixFill  triangle = MatrixFill::Upper,
bool  unit_diagonal = false 
)

Estimate a dense real triangular one-norm reciprocal condition number through LAPACK trcon.

The input matrix is copied by value because LAPACK accepts a mutable pointer. Only the selected triangle is read. The estimate is for 1 / (||A||_1 * ||inv(A)||_1).

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
matrixReal square triangular matrix.
triangleTriangle of matrix supplied to LAPACK.
unit_diagonalWhether the triangular diagonal is implicitly unit.
Returns
Estimated one-norm reciprocal condition number.

◆ real_triangular_refined_solve()

template<uni20::LapackReal Scalar>
RealRefinedLinearSolve< Scalar > uni20::krylov::real_triangular_refined_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper,
MatrixTranspose  transpose = MatrixTranspose::None,
bool  unit_diagonal = false 
)

Solve and refine a dense real triangular system through LAPACK trrfs.

Solves op(A) * X = B with trtrs, then asks LAPACK trrfs for forward and backward error estimates. The coefficient matrix is triangular and is not factorized.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square triangular coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
transposeMatrix operation applied to coefficients before solving.
unit_diagonalWhether the triangular diagonal is implicitly unit.
Returns
Refined solution and LAPACK error estimates.

◆ real_triangular_solve()

template<uni20::LapackReal Scalar>
detail::ColumnMajorLapackMatrix< Scalar > uni20::krylov::real_triangular_solve ( detail::ColumnMajorLapackMatrix< Scalar >  coefficients,
detail::ColumnMajorLapackMatrix< Scalar >  right_hand_sides,
MatrixFill  triangle = MatrixFill::Upper,
MatrixTranspose  transpose = MatrixTranspose::None,
bool  unit_diagonal = false 
)

Solve a dense real triangular system through LAPACK trtrs.

Solves op(A) * X = B for one or more dense right-hand sides, where A is triangular and op(A) is selected by transpose. The coefficient and right-hand-side matrices are copied by value and may be overwritten by LAPACK. The returned matrix stores X.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
coefficientsReal square triangular coefficient matrix.
right_hand_sidesDense right-hand-side matrix with matching row count.
triangleTriangle of coefficients supplied to LAPACK.
transposeMatrix operation applied to coefficients before solving.
unit_diagonalWhether the triangular diagonal is implicitly unit.
Returns
Dense solution matrix.

◆ reorder_complex_schur()

template<uni20::LapackReal Real>
ComplexSchurDecomposition< Real > uni20::krylov::reorder_complex_schur ( ComplexSchurDecomposition< Real >  decomposition,
std::vector< std::size_t > const &  leading_order 
)

Reorder a column-major complex Schur decomposition by moving selected entries to the front.

Template Parameters
Realfloat or double.
Parameters
decompositionComplex Schur decomposition to reorder.
leading_orderInput entry indices to move to the leading positions.
Returns
Reordered complex Schur decomposition.

◆ reorder_complex_schur_layout_right()

template<uni20::LapackReal Real>
RightComplexSchurDecomposition< Real > uni20::krylov::reorder_complex_schur_layout_right ( RightComplexSchurDecomposition< Real >  decomposition,
std::vector< std::size_t > const &  leading_order 
)

Move selected real Schur blocks to the leading invariant subspace and estimate conditioning.

Uses LAPACK trsen with ‘JOB='B’, returning reciprocal condition estimates for the selected eigenvalue cluster and invariant subspace. Selection is by Schur block, so real-arithmetic 2x2 complex-conjugate blocks cannot be split accidentally. \tparam Scalar Real scalar type satisfyinguni20::LapackReal`.

Parameters
decompositionReal Schur decomposition to reorder and diagnose.

◆ reorder_real_generalized_schur()

template<uni20::LapackReal Real>
RealGeneralizedSchurDecomposition< Real > uni20::krylov::reorder_real_generalized_schur ( RealGeneralizedSchurDecomposition< Real >  decomposition,
std::vector< std::size_t > const &  leading_block_order 
)

Reorder a generalized real Schur decomposition by moving selected blocks to the front.

Uses LAPACK tgexc to reorder the QZ forms of A - lambda B. Real-arithmetic 2x2 complex-conjugate blocks are moved as indivisible units, and the projective alpha/beta data is kept aligned with the new block order.

Template Parameters
RealReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionGeneralized real Schur decomposition to reorder.
leading_block_orderInput block indices to move to the leading positions.
Returns
Reordered generalized real Schur decomposition.

◆ reorder_real_schur()

template<uni20::LapackReal Scalar>
RealSchurDecomposition< Scalar > uni20::krylov::reorder_real_schur ( RealSchurDecomposition< Scalar >  decomposition,
std::vector< std::size_t > const &  leading_block_order 
)

Reorder a column-major real Schur decomposition by moving selected blocks to the front.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionReal Schur decomposition to reorder.
leading_block_orderInput block indices to move to the leading positions.
Returns
Reordered real Schur decomposition.

◆ reorder_real_schur_layout_right()

template<uni20::LapackReal Scalar>
RightRealSchurDecomposition< Scalar > uni20::krylov::reorder_real_schur_layout_right ( RightRealSchurDecomposition< Scalar >  decomposition,
std::vector< std::size_t > const &  leading_block_order 
)

Reorder a layout-right real Schur decomposition by moving selected blocks to the front.

leading_block_order names blocks in the input decomposition's current block order. Any blocks not named are left after the requested prefix in their original relative order. Complex conjugate 2x2 real Schur blocks are moved as indivisible blocks. The Schur form and, when present, Schur vectors are updated through LAPACK trexc.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
decompositionReal Schur decomposition to reorder.
leading_block_orderInput block indices to move to the leading positions.
Returns
Reordered real Schur decomposition.

◆ right_mdspan() [1/2]

template<typename Scalar >
auto uni20::krylov::right_mdspan ( RightMatrix< Scalar > &  matrix)

Return a mutable layout-right mdspan view of a prototype right-layout matrix.

Template Parameters
ScalarElement type.
Parameters
matrixMatrix whose storage is exposed.
Returns
Mutable rank-2 layout-right mdspan view.

◆ right_mdspan() [2/2]

template<typename Scalar >
auto uni20::krylov::right_mdspan ( RightMatrix< Scalar > const &  matrix)

Return an immutable layout-right mdspan view of a prototype right-layout matrix.

Template Parameters
ScalarElement type.
Parameters
matrixMatrix whose storage is exposed.
Returns
Immutable rank-2 layout-right mdspan view.

◆ scal()

template<typename Scalar >
void uni20::krylov::scal ( Scalar const &  alpha,
std::span< Scalar >  vector 
)

Scale a local dense vector in place.

Template Parameters
ScalarElement type.
Parameters
alphaScale factor.
vectorVector to scale.

◆ select_nonsymmetric_restart_indices()

template<uni20::Real Scalar>
std::vector< std::size_t > uni20::krylov::select_nonsymmetric_restart_indices ( std::vector< uni20::complex< Scalar > > const &  values,
NonsymmetricEigenParams< Scalar > const &  params 
)

Select retained Ritz or Schur indices for a nonsymmetric thick restart.

Template Parameters
ScalarReal scalar type.
Parameters
valuesProjected Ritz or Schur eigenvalues.
paramsSolver parameters defining selector and retained count.
Returns
Indices of retained values in wanted order.

◆ select_nonsymmetric_ritz_indices()

template<uni20::Real Scalar>
std::vector< std::size_t > uni20::krylov::select_nonsymmetric_ritz_indices ( std::vector< uni20::complex< Scalar > > const &  values,
NonsymmetricEigenParams< Scalar > const &  params 
)

Select wanted Ritz indices for a nonsymmetric projected spectrum.

Nonsymmetric projected eigenvalues may be complex. LargestReal and SmallestReal use the real part, imaginary selectors use the signed imaginary part, and magnitude selectors use complex magnitude. Algebraic and both-end selectors are deliberately rejected because they are symmetric/Hermitian concepts.

Template Parameters
ScalarReal scalar type.
Parameters
valuesProjected Ritz values.
paramsSolver parameters defining nev and selector.
Returns
Indices of selected wanted Ritz values.

◆ select_real_schur_restart_blocks()

template<uni20::LapackReal Scalar>
RealSchurRestartSelection< Scalar > uni20::krylov::select_real_schur_restart_blocks ( std::vector< RealSchurBlock< Scalar > > const &  blocks,
NonsymmetricEigenParams< Scalar > const &  params 
)

Select real Schur blocks for a nonsymmetric thick restart.

The requested retained dimension is interpreted as a number of scalar Schur dimensions. Since real arithmetic represents complex conjugate eigenpairs as 2x2 Schur blocks, the returned scalar_count may exceed the requested count by one when needed to avoid cutting a complex block.

Template Parameters
ScalarReal scalar type.
Parameters
blocksReal Schur blocks in current projected order.
paramsNonsymmetric solve parameters defining selector and retained count.
Returns
Selected block indices in wanted order and the corresponding scalar dimension.

◆ select_symmetric_restart()

template<uni20::Real Scalar>
SymmetricRestartSelection< Scalar > uni20::krylov::select_symmetric_restart ( std::vector< Scalar > const &  values,
std::vector< Scalar > const &  residual_bounds,
SymmetricEigenParams< Scalar > const &  params,
std::size_t  shift_count,
std::span< std::size_t const >  protected_shift_indices = {} 
)

Select wanted Ritz values and exact-shift candidates for symmetric restart.

Ritz values are ordered so the retained values occupy the final n_keep positions, and the unwanted shift candidates are then ordered by decreasing Ritz estimate. When retained_ritz_count is not set, n_keep defaults to nev and the behavior is the minimal implicit restart. The filtering step itself is separate.

Template Parameters
ScalarReal vector-field scalar or complex vector-field scalar.
Parameters
valuesProjected Ritz values.
residual_boundsRitz residual estimates with the same length as values.
paramsSolver parameters defining nev, optional n_keep, selector, and tolerance.
shift_countNumber of exact shifts to select from the unwanted values.
Returns
Restart-selection state.

◆ symmetric_lanczos_restarted_generalized_transformed() [1/2]

template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > OpOps, KrylovMatrixFreeOperator< Vector, Scalar > BOps, typename MetricOps >
EigenResult< uni20::make_real_t< Scalar >, Vector > uni20::krylov::symmetric_lanczos_restarted_generalized_transformed ( OpOps &  op_ops,
BOps &  b_ops,
MetricOps &  metric_ops,
Vector const &  initial,
SymmetricEigenParams< uni20::make_real_t< Scalar > > const &  params,
SymmetricSpectralTransformOptions< uni20::make_real_t< Scalar > > const &  options 
)

Run restarted symmetric Lanczos on a transformed generalized operator with a B metric.

This entry point is for generalized symmetric problems where the caller supplies OP, such as B^-1 A or (A - sigma B)^-1 B, and a separate matrix-free B operation. The Lanczos recurrence uses the B inner product, so the transformed operator is treated as self-adjoint in the generalized problem metric. The returned eigenvalues are mapped back through options, and the returned Ritz vectors are application-space vectors for the original generalized problem.

Template Parameters
ScalarReal or complex vector-field scalar type with real LAPACK coverage.
VectorOpaque vector type.
OpOpsMatrix-free transformed-operator provider.
BOpsMatrix-free B operation provider.
MetricOpsOptional backend-owned metric inner-product provider.
Parameters
op_opsMatrix-free operation object applying OP.
b_opsMatrix-free operation object applying B.
metric_opsOptional metric operation object. If it provides metric_inner_product(x, y), that is used directly; otherwise the solver applies B*y into reusable scratch and calls op_ops.inner_product.
initialInitial residual/start vector.
paramsSolver parameters for the transformed problem.
optionsTransform metadata used for eigenvalue back-transformation.
Returns
Eigenvalues mapped to the original problem, with generalized Ritz vectors.

◆ symmetric_lanczos_restarted_generalized_transformed() [2/2]

template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > OpOps, KrylovMatrixFreeOperator< Vector, Scalar > BOps>
EigenResult< uni20::make_real_t< Scalar >, Vector > uni20::krylov::symmetric_lanczos_restarted_generalized_transformed ( OpOps &  op_ops,
BOps &  b_ops,
Vector const &  initial,
SymmetricEigenParams< uni20::make_real_t< Scalar > > const &  params,
SymmetricSpectralTransformOptions< uni20::make_real_t< Scalar > > const &  options 
)

Run restarted symmetric Lanczos on a transformed generalized operator with default metric handling.

This convenience overload uses b_ops as the optional metric customization provider. Backends can implement b_ops.metric_inner_product(x, y) to own scratch, caching, or fused backend collectives; otherwise the generic fallback applies B*y into reusable solver scratch.

Template Parameters
ScalarReal or complex vector-field scalar type with real LAPACK coverage.
VectorOpaque vector type.
OpOpsMatrix-free transformed-operator provider.
BOpsMatrix-free B operation provider.
Parameters
op_opsMatrix-free operation object applying OP.
b_opsMatrix-free operation object applying B.
initialInitial residual/start vector.
paramsSolver parameters for the transformed problem.
optionsTransform metadata used for eigenvalue back-transformation.
Returns
Eigenvalues mapped to the original problem, with generalized Ritz vectors.

◆ symmetric_lanczos_restarted_standard()

template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
EigenResult< uni20::make_real_t< Scalar >, Vector > uni20::krylov::symmetric_lanczos_restarted_standard ( Ops &  ops,
Vector const &  initial,
SymmetricEigenParams< uni20::make_real_t< Scalar > > const &  params 
)

Run a native symmetric/Hermitian Lanczos solve with implicit restarts.

This expands a Lanczos factorization to ncv, computes Ritz values and residual bounds, applies exact shifts to the projected tridiagonal, compresses the opaque basis through the accumulated transform, and resumes expansion from the updated residual.

Template Parameters
ScalarReal or complex vector-field scalar type with real LAPACK coverage.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free operation object.
initialInitial residual/start vector.
paramsSolver parameters.
Returns
Ritz values and optional Ritz vectors from the final projection.

◆ symmetric_lanczos_restarted_transformed()

template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
EigenResult< uni20::make_real_t< Scalar >, Vector > uni20::krylov::symmetric_lanczos_restarted_transformed ( Ops &  op_ops,
Vector const &  initial,
SymmetricEigenParams< uni20::make_real_t< Scalar > > const &  params,
SymmetricSpectralTransformOptions< uni20::make_real_t< Scalar > > const &  options 
)

Run restarted symmetric Lanczos on a caller-supplied transformed operator.

The matrix-free operation object must implement the transformed operator OP for the requested mode, for example (A - sigma B)^-1 B for shift-invert. The native solver remains independent of the workspace layout or linear-solver implementation used to apply OP; this wrapper only maps converged Ritz values back to the original eigenvalue scale. Reported residual bounds are those of the transformed problem.

Template Parameters
ScalarReal scalar type.
VectorOpaque vector type.
OpsMatrix-free transformed-operator provider.
Parameters
op_opsMatrix-free operation object applying OP.
initialInitial residual/start vector.
paramsSolver parameters for the transformed problem.
optionsTransform metadata used for eigenvalue back-transformation.
Returns
Eigenvalues mapped to the original problem, with OP Ritz vectors.

◆ symmetric_lanczos_standard()

template<uni20::LapackRealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
EigenResult< uni20::make_real_t< Scalar >, Vector > uni20::krylov::symmetric_lanczos_standard ( Ops &  ops,
Vector const &  initial,
SymmetricEigenParams< uni20::make_real_t< Scalar > > const &  params 
)

Run the native symmetric/Hermitian Lanczos full-projection solver.

This implementation keeps the vector storage opaque and communicates with the application only through the matrix-free operation object. The current implementation uses full reorthogonalization for deterministic, robust basis construction.

Template Parameters
ScalarReal or complex vector-field scalar type with real LAPACK coverage.
VectorOpaque vector type.
OpsMatrix-free vector operation provider.
Parameters
opsMatrix-free operation object.
initialInitial residual/start vector.
paramsSolver parameters.
Returns
Ritz values and optional Ritz vectors from the Lanczos projection.

◆ symmetric_tridiagonal()

template<uni20::Real Real>
symmetric_tridiagonal_view< Real > uni20::krylov::symmetric_tridiagonal ( std::span< Real const >  diagonal,
std::span< Real const >  offdiagonal 
)

◆ symmetric_tridiagonal_eigensystem()

template<uni20::LapackReal Scalar>
TridiagonalEigensystem< Scalar > uni20::krylov::symmetric_tridiagonal_eigensystem ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  subdiagonal,
bool  compute_vectors 
)

Solve a real symmetric tridiagonal eigensystem through LAPACK sterf or steqr.

diagonal has length n; subdiagonal has length n - 1. Eigenvalues are returned in ascending order. If compute_vectors is false, LAPACK sterf is used. If compute_vectors is true, LAPACK steqr is used and eigenvectors is an n-by-n column-major matrix whose columns are the normalized eigenvectors.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the tridiagonal matrix.
subdiagonalSubdiagonal/superdiagonal entries.
compute_vectorsWhether to compute eigenvectors.
Returns
Eigenvalues and, optionally, eigenvectors.

◆ symmetric_tridiagonal_eigensystem_divide_and_conquer()

template<uni20::LapackReal Scalar>
TridiagonalEigensystem< Scalar > uni20::krylov::symmetric_tridiagonal_eigensystem_divide_and_conquer ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  subdiagonal,
bool  compute_vectors 
)

Solve a real symmetric tridiagonal eigenvalue problem through LAPACK sterf.

diagonal has length n; subdiagonal has length n - 1. Eigenvalues are returned in ascending order.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the tridiagonal matrix.
subdiagonalSubdiagonal/superdiagonal entries.
Returns
Eigenvalues in ascending order.

◆ symmetric_tridiagonal_eigensystem_index_range()

template<uni20::LapackReal Scalar>
TridiagonalEigensystem< Scalar > uni20::krylov::symmetric_tridiagonal_eigensystem_index_range ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  subdiagonal,
std::size_t  first_index,
std::size_t  last_index,
bool  compute_vectors 
)

Solve a selected real symmetric tridiagonal eigensystem through LAPACK stevr.

Selects eigenpairs by 0-based inclusive index in ascending eigenvalue order. diagonal has length n; subdiagonal has length n - 1. If compute_vectors is true, eigenvectors is an n-by-m column-major matrix whose columns are the selected normalized eigenvectors.

Template Parameters
ScalarReal scalar type satisfying uni20::LapackReal.
Parameters
diagonalMain diagonal of the tridiagonal matrix.
subdiagonalSubdiagonal/superdiagonal entries.
first_indexFirst 0-based eigenvalue index to compute.
last_indexLast 0-based eigenvalue index to compute.
compute_vectorsWhether to compute selected eigenvectors.
Returns
Selected eigenvalues and, optionally, selected eigenvectors.

◆ symmetric_tridiagonal_eigenvalues()

template<uni20::LapackReal Scalar>
std::vector< Scalar > uni20::krylov::symmetric_tridiagonal_eigenvalues ( std::vector< Scalar >  diagonal,
std::vector< Scalar >  subdiagonal 
)

◆ taylor_exponential_action()

template<uni20::RealOrComplex Scalar, typename TimeScalar , typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
requires (std::constructible_from<uni20::make_real_t<Scalar>, TimeScalar> || (uni20::Complex<Scalar> && std::constructible_from<Scalar, TimeScalar>))
TaylorExponentialResult< Scalar, Vector > uni20::krylov::taylor_exponential_action ( Ops &  ops,
Vector const &  initial,
TimeScalar  time,
uni20::make_real_t< Scalar >  operator_norm_bound,
TaylorExponentialParams< uni20::make_real_t< Scalar > > const &  params = {} 
)

Compute exp(t A) v using conservative scaled Taylor series.

This validation-oriented action is algorithmically independent of the Lanczos/Arnoldi projected exponential paths. The caller supplies a finite upper bound for ||A||; the routine chooses a number of scaled steps so that each Taylor series sees ||h A|| <= step_norm_limit, then truncates using a geometric tail bound. It is intentionally slower and more conservative than the Krylov projected action, and it is not used as an automatic fallback.

Template Parameters
ScalarReal or complex vector-field scalar type.
TimeScalarReal time for real vector spaces; real or complex time for complex vector spaces.
VectorOpaque vector type.
OpsMatrix-free operation provider.
Parameters
opsMatrix-free operation object.
initialInitial vector.
timeExponential coefficient.
operator_norm_boundFinite upper bound for ||A||.
paramsTaylor action parameters.
Returns
Approximation to exp(t A) initial and diagnostics.

◆ validate_matrix_free_dimensions()

template<typename Ops , typename Vector >
std::size_t uni20::krylov::validate_matrix_free_dimensions ( Ops const &  ops,
Vector const &  vector,
char const *  context 
)

Validate that an initial/prototype vector matches the matrix-free problem dimension.