|
Uni20
Asynchronous tensor and runtime library.
|
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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms, 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 ¶ms, 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 ¶ms, int krylov_dimension) |
| Return the effective nonsymmetric retained Ritz or Schur count. | |
| template<uni20::Real Scalar> | |
| int | effective_symmetric_krylov_dimension (SymmetricEigenParams< Scalar > const ¶ms, 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 ¶ms, 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 ¶ms) |
| 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 ¶ms={}) |
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 ¶ms={}) |
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 ¶ms, 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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms) |
| 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 ¶ms, 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 ¶ms, 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 ¶ms, 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 ¶ms) |
| 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 ¶ms, 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 ¶ms) |
| 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 ¶ms={}) |
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. | |
| using uni20::krylov::MatrixFill = typedef uni20::linalg::MatrixRegion |
Matrix region selected by LAPACK-style copy and set operations.
| using uni20::krylov::RightMatrix = typedef uni20::DenseMatrix<Scalar, uni20::RowMajor> |
Owning row-major dense matrix retained for layout-specific Krylov helpers.
| using uni20::krylov::SymmetricSpectralTransform = typedef SymmetricTransformKind |
Backward-compatible name for symmetric transform kinds.
| using uni20::krylov::SymmetricSpectralTransformOptions = typedef SymmetricTransformOptions<Scalar> |
Backward-compatible name for symmetric transform options.
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
Policy for real nonsymmetric solves when wanted Ritz values may be complex.
|
strong |
|
strong |
|
strong |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact bidiagonal reduction returned by real_bidiagonal_reduction. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact bidiagonal reduction returned by real_bidiagonal_reduction. |
| target | Matrix overwritten by op(P) * target or target * op(P). |
| side | Whether op(P) multiplies target from the left or right. |
| transpose | Matrix operation applied to P. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact Hessenberg reduction returned by real_hessenberg_reduction. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Compact LQ factorization returned by real_compact_lq_factorization. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Compact QL factorization returned by real_compact_ql_factorization. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Compact QR factorization returned by real_compact_qr_factorization. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Compact RQ factorization returned by real_compact_rq_factorization. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact tridiagonal reduction returned by real_symmetric_tridiagonal_reduction. |
| target | Matrix overwritten by op(Q) * target or target * op(Q). |
| side | Whether op(Q) multiplies target from the left or right. |
| transpose | Matrix operation applied to Q. |
| 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.
| Scalar | Real scalar type. |
| diagonal | Main diagonal of the tridiagonal matrix. |
| subdiagonal | Subdiagonal entries, length diagonal.size() - 1. |
| shifts | Exact shifts to apply. |
| 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.
| Scalar | Vector-space scalar type. |
| Vector | Opaque vector type. |
| Ops | Matrix-free operator/vector operation type. |
| ops | Matrix-free vector operations and operator application. |
| initial | Initial vector used to seed the Arnoldi basis. |
| max_steps | Maximum number of Arnoldi steps. |
| breakdown_tolerance | Absolute residual norm threshold for happy breakdown. |
| uni20::DenseMatrix< Scalar > uni20::krylov::arnoldi_projected_hessenberg | ( | ArnoldiFactorization< Scalar, Vector > const & | factorization | ) |
Copy the square projected Hessenberg block from an Arnoldi factorization.
| Scalar | Vector-space scalar type. |
| Vector | Opaque vector type used by the Arnoldi basis. |
| factorization | Arnoldi factorization to extract from. |
m-by-m projected Hessenberg matrix. | 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.
| Scalar | Element type. |
| y | Destination vector updated as y += alpha * x. |
| alpha | Scale factor. |
| x | Source vector. |
| uni20::krylov::BlockTensorMatrixFreeOps | ( | Tensor const & | , |
| Operator | |||
| ) | -> BlockTensorMatrixFreeOps< std::remove_cvref_t< Tensor >, Operator > |
| 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.
| C | Complex scalar type deduced from the Ritz value. |
| theta | Ritz value to classify. |
| tolerance | Relative 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. |
| scale | Problem or projected-matrix scale. Values below one are raised to one. |
| ambiguity_factor | Width of the ambiguous band above the real threshold. |
theta. | 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.
| Real | Underlying real precision. |
| matrix | Complex Hermitian square matrix A. Only the selected triangle is read. |
| metric | Complex Hermitian positive definite square matrix B. |
| compute_vectors | Whether to compute generalized eigenvectors. |
| triangle | Triangle of matrix and metric supplied to LAPACK. |
| 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.
| Real | Underlying real precision. |
| matrix | Complex Hermitian square matrix A. Only the selected triangle is read. |
| metric | Complex Hermitian positive definite square matrix B. |
| compute_vectors | Whether to compute generalized eigenvectors. |
| triangle | Triangle of matrix and metric supplied to LAPACK. |
| 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.
| Real | Underlying real precision. |
| matrix | Complex Hermitian square matrix A. Only the selected triangle is read. |
| metric | Complex Hermitian positive definite square matrix B. |
| first_index | First 0-based eigenvalue index to compute. |
| last_index | Last 0-based eigenvalue index to compute. |
| compute_vectors | Whether to compute selected generalized eigenvectors. |
| triangle | Triangle of matrix and metric supplied to LAPACK. |
| 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.
| Real | Underlying real precision. |
| matrix | Complex Hermitian square matrix. Only the selected triangle is read. |
| compute_vectors | Whether to compute eigenvectors. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Real | Underlying real precision. |
| matrix | Complex Hermitian square matrix. Only the selected triangle is read. |
| compute_vectors | Whether to compute eigenvectors. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Real | Underlying real precision. |
| matrix | Complex Hermitian square matrix. Only the selected triangle is read. |
| first_index | First 0-based eigenvalue index to compute. |
| last_index | Last 0-based eigenvalue index to compute. |
| compute_vectors | Whether to compute selected eigenvectors. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Real | Underlying real precision. |
| Vector | Opaque vector type. |
| Ops | Matrix-free operator/vector operation type. |
| ops | Matrix-free vector operations and operator application. |
| initial | Initial residual/start vector. |
| params | Solver parameters. Tolerances and residuals use 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`.
| matrix | Real square matrix in column-major local storage. |
| compute_right_vectors | Whether to compute right eigenvectors. |
| 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.
| Real | float or double. |
| matrix | Complex square matrix in current Krylov local storage. |
| compute_vectors | Whether to compute Schur vectors. |
| 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.
| Real | float or double. |
| matrix | Complex square matrix in logical layout-right storage. |
| compute_vectors | Whether to compute Schur vectors. |
| 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.
| Real | Real precision whose uni20::complex<Real> has dense LAPACK coverage. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free vector operations. |
| factorization | Input Arnoldi factorization. |
| params | Nonsymmetric solve parameters used for Schur entry selection. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free vector operations. |
| factorization | Input Arnoldi factorization. |
| params | Nonsymmetric solve parameters used for block selection. |
| 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.
| Scalar | Real scalar type. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free operation object. |
| basis | Original Lanczos basis vectors. |
| residual | Original residual vector. |
| shifted | Shifted projected factorization and accumulated transform. |
| retained_count | Number of transformed basis vectors to keep. |
| void uni20::krylov::copy | ( | std::span< Scalar > | destination, |
| std::span< Scalar const > | source | ||
| ) |
Copy a local dense vector.
| Scalar | Element type. |
| destination | Destination vector overwritten with source. |
| source | Source vector. |
| RightMatrix< Scalar > uni20::krylov::copy_left_to_right | ( | uni20::DenseMatrix< Scalar > const & | matrix | ) |
Copy a column-major DenseMatrix into a row-major matrix.
| Scalar | Element type. |
| matrix | Source column-major matrix. |
| uni20::DenseMatrix< Scalar > uni20::krylov::copy_right_to_left | ( | RightMatrix< Scalar > const & | matrix | ) |
Copy a row-major matrix into a column-major DenseMatrix.
| Scalar | Element type. |
| matrix | Source row-major matrix. |
|
inline |
Return the default adaptive Krylov projection cap for exponential actions.
| Scalar uni20::krylov::default_complex_pair_tolerance | ( | ) |
Default imaginary-part tolerance for deciding whether a real Arnoldi Ritz value is real.
| Scalar | Real scalar type. |
| Scalar uni20::krylov::default_complex_pair_tolerance | ( | Scalar const & | exemplar | ) |
Default reality tolerance using the exemplar's working precision.
| std::logic_error | If a runtime-precision exemplar is exact or unset. |
|
inline |
Return the default Krylov projection dimension for exponential actions.
|
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)).
|
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.
|
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.
|
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.
| Scalar uni20::krylov::dot | ( | std::span< Scalar const > | x, |
| std::span< Scalar const > | y | ||
| ) |
Compute a BLAS-style real dot product.
| Scalar | Real scalar type. |
| x | Left vector. |
| y | Right vector. |
x[i] * y[i]. | Scalar uni20::krylov::dotc | ( | std::span< Scalar const > | x, |
| std::span< Scalar const > | y | ||
| ) |
Compute a conjugated dot product.
| Scalar | Element type. |
| x | Left vector, conjugated elementwise for complex scalar types. |
| y | Right vector. |
conj(x[i]) * y[i]. | Scalar uni20::krylov::dotu | ( | std::span< Scalar const > | x, |
| std::span< Scalar const > | y | ||
| ) |
Compute an unconjugated dot product.
| Scalar | Element type. |
| x | Left vector. |
| y | Right vector. |
x[i] * y[i]. | 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.
| int uni20::krylov::effective_nonsymmetric_krylov_dimension | ( | NonsymmetricEigenParams< Scalar > const & | params, |
| std::size_t | problem_dimension | ||
| ) |
Return the effective nonsymmetric Arnoldi subspace dimension.
| int uni20::krylov::effective_nonsymmetric_retained_ritz_count | ( | NonsymmetricEigenParams< Scalar > const & | params, |
| int | krylov_dimension | ||
| ) |
Return the effective nonsymmetric retained Ritz or Schur count.
| int uni20::krylov::effective_symmetric_krylov_dimension | ( | SymmetricEigenParams< Scalar > const & | params, |
| std::size_t | problem_dimension | ||
| ) |
Return the effective symmetric/Hermitian Krylov subspace dimension.
| int uni20::krylov::effective_symmetric_retained_ritz_count | ( | SymmetricEigenParams< Scalar > const & | params, |
| int | krylov_dimension | ||
| ) |
Return the effective symmetric/Hermitian retained Ritz count.
| 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.
| Real | Real precision whose uni20::complex<Real> has dense LAPACK coverage. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free vector operations and operator application. |
| compressed | Compressed Schur restart relation. |
| target_step_count | Desired projected dimension after expansion. |
| breakdown_tolerance | Absolute residual norm threshold for happy breakdown. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free vector operations and operator application. |
| compressed | Compressed Schur restart relation. |
| target_step_count | Desired projected dimension after expansion. |
| breakdown_tolerance | Absolute residual norm threshold for happy breakdown. |
| bool uni20::krylov::exponential_adaptive_acceptance_enabled | ( | KrylovExponentialParams< Scalar > const & | params | ) |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| Vector | Opaque vector type used by the Arnoldi basis. |
| factorization | Arnoldi factorization to extract from. |
| complex_pair_tolerance | Relative imaginary-part tolerance for reality classification. |
| scale | Optional projected-problem scale for reality classification. |
| 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.
| Complex | Complex scalar type with dense LAPACK coverage, deduced from the factorization. |
| Vector | Opaque vector type used by the Arnoldi basis. |
| factorization | Complex Arnoldi factorization to extract from. |
| complex_pair_tolerance | Relative imaginary-part tolerance for reality classification. |
| scale | Optional projected-problem scale for reality classification. |
| 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.
| Scalar | Element type. |
| y | Output vector updated as y = alpha * op(matrix) * x + beta * y. |
| alpha | Scale factor for the matrix-vector product. |
| matrix | Input matrix. |
| x | Input vector. |
| beta | Scale factor for the original y value. |
| transpose | Matrix operation applied before multiplication. |
| 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.
| Scalar | Element type. |
| matrix | Matrix updated as matrix += alpha * x * conj(y)^T. |
| alpha | Scale factor. |
| x | Left vector. |
| y | Right vector, conjugated elementwise for complex scalar types. |
| 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.
| Scalar | Element type. |
| matrix | Matrix updated as matrix += alpha * x * y^T. |
| alpha | Scale factor. |
| x | Left vector. |
| y | Right vector. |
| 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.
| std::invalid_argument | For incompatible dimensions or invalid options. Callback exceptions propagate. |
| 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.
| std::invalid_argument | For incompatible dimensions, invalid tolerances or a zero restart length. Callback exceptions propagate. |
| 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.
| 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.
| 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.
| 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.
| Scalar | Real or complex vector-field scalar type with projected dense LAPACK coverage. |
| Vector | Opaque vector type. |
| Ops | Matrix-free operation provider. |
| auto uni20::krylov::krylov_space | ( | Ops & | ops, |
| V && | source | ||
| ) |
Bind fixed-scalar vector operations at native precision.
| 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.
| void uni20::krylov::lacpy | ( | uni20::DenseMatrix< Scalar > & | destination, |
| uni20::DenseMatrix< Scalar > const & | source, | ||
| MatrixFill | fill | ||
| ) |
Copy a selected region of a local dense matrix.
| Scalar | Element type. |
| destination | Destination matrix with the same shape as source. |
| source | Source matrix. |
| fill | Region to copy. |
| 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.
| Scalar | Element type. |
| matrix | Matrix to update. |
| diagonal | Value written on the diagonal. |
| off_diagonal | Value written away from the diagonal. |
| fill | Region to set. |
| 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.
| Scalar | Real or complex vector-field scalar type. |
| transformed_value | Ritz value of the caller-supplied OP. |
| options | Spectral transform represented by OP. |
| 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).
| 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.
| Scalar | Real or complex vector-field scalar type with projected dense LAPACK coverage. |
| Vector | Opaque vector type. |
| Ops | Matrix-free operation provider. |
| 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.
| 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.
| Scalar | Real scalar type. |
| params | Solver parameters defining nev, optional n_keep, and selector. |
| values | Projected Ritz values. |
| residual_bounds | Ritz residual estimates with the same length as values. |
| converged_count | Number of currently converged requested Ritz values. |
| 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.
| Scalar | Real or complex scalar type. |
| matrix | Square projected matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact bidiagonal reduction returned by real_bidiagonal_reduction. |
Q factor satisfying A = Q * B * P^T. | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to reduce. |
| 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`.
| std::vector< Scalar > uni20::krylov::real_bidiagonal_singular_values | ( | RealBidiagonalReduction< Scalar > const & | reduction | ) |
Compute singular values from a compact real bidiagonal reduction.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact bidiagonal reduction returned by real_bidiagonal_reduction. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the bidiagonal matrix. |
| offdiagonal | Superdiagonal entries if upper is true, otherwise subdiagonal entries. |
| upper | Whether the bidiagonal matrix is upper or lower bidiagonal. |
| RealBidiagonalSvd< Scalar > uni20::krylov::real_bidiagonal_svd | ( | RealBidiagonalReduction< Scalar > const & | reduction, |
| bool | compute_vectors | ||
| ) |
Compute the SVD from a compact real bidiagonal reduction.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact bidiagonal reduction returned by real_bidiagonal_reduction. |
| compute_vectors | Whether to compute explicit singular vectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the bidiagonal matrix. |
| offdiagonal | Superdiagonal entries if upper is true, otherwise subdiagonal entries. |
| compute_vectors | Whether to compute explicit singular vectors. |
| upper | Whether the bidiagonal matrix is upper or lower bidiagonal. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact bidiagonal reduction returned by real_bidiagonal_reduction. |
| first_index | First 0-based decreasing singular-value index to compute. |
| last_index | Last 0-based decreasing singular-value index to compute. |
| compute_vectors | Whether to compute explicit singular vectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the bidiagonal matrix. |
| offdiagonal | Superdiagonal entries if upper is true, otherwise subdiagonal entries. |
| first_index | First 0-based decreasing singular-value index to compute. |
| last_index | Last 0-based decreasing singular-value index to compute. |
| compute_vectors | Whether to compute explicit singular vectors. |
| upper | Whether the bidiagonal matrix is upper or lower bidiagonal. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix to invert. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real rectangular coefficient matrix A. |
| right_hand_sides | Dense right-hand-side matrix B with matching row count. |
| rcond | Relative singular-value threshold used by LAPACK to determine rank. |
A. | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real dense matrix. |
| 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`.
| coefficients | Real square coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| band_matrix | Real square general-band matrix in LAPACK factor-storage layout. |
| 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`.
| coefficients | Real square general-band coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the coefficient matrix. |
| RealGeneralBandFactorization< Scalar > uni20::krylov::real_general_band_factorization | ( | RealGeneralBandMatrix< Scalar > | matrix | ) |
Compute a real general-band LU factorization through LAPACK gbtrf.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square general-band matrix in LAPACK factor-storage layout. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix to pack. |
| lower_bandwidth | Number of stored subdiagonals. |
| upper_bandwidth | Number of stored superdiagonals. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| band_matrix | Real general-band matrix in LAPACK factor-storage layout. |
| norm | Matrix norm to compute. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_general_band_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square general-band matrix in LAPACK factor-storage layout. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| band_matrix | Real square general-band matrix in LAPACK factor-storage layout. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square general-band coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the coefficient matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_general_band_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the original coefficient matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square general-band coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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`.
| coefficients | Real square general tridiagonal coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the coefficient matrix. |
| RealGeneralTridiagonalFactorization< Scalar > uni20::krylov::real_general_tridiagonal_factorization | ( | RealGeneralTridiagonalMatrix< Scalar > | matrix | ) |
Compute a real general tridiagonal LU factorization through LAPACK gttrf.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square general tridiagonal matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square tridiagonal matrix. |
gtsv and gttrf. | Scalar uni20::krylov::real_general_tridiagonal_one_norm | ( | RealGeneralTridiagonalMatrix< Scalar > const & | matrix | ) |
Compute the one-norm of a real general tridiagonal matrix.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square general tridiagonal matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_general_tridiagonal_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square general tridiagonal matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square general tridiagonal coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the coefficient matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_general_tridiagonal_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the original coefficient matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square general tridiagonal coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix A in column-major local storage. |
| upper_triangular_metric | Real upper-triangular square matrix B. |
| compute_vectors | Whether to compute the left and right orthogonal transformations. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| hessenberg | Real upper-Hessenberg square matrix H. |
| upper_triangular_metric | Real upper-triangular square matrix T. |
| compute_vectors | Whether to compute left and right generalized Schur vectors. |
| RealGeneralizedNonsymmetricBalance< Real > uni20::krylov::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.
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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix A in column-major local storage. |
| metric | Real square matrix B in column-major local storage. |
| job | Balancing operation to apply. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| vectors | Real right eigenvector columns of the balanced pencil. |
| balance | Balancing metadata returned by real_generalized_nonsymmetric_balance. |
| job | The same balancing operation used for the pencil. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix A in column-major local storage. |
| metric | Real square matrix B in column-major local storage. |
| compute_right_vectors | Whether to compute right eigenvectors. |
| 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.
| compute_right_vectors | Whether to return right eigenvectors. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix A in column-major local storage. |
| metric | Real square matrix B in column-major local storage. |
| compute_vectors | Whether to compute left and right generalized Schur vectors. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Generalized real Schur decomposition whose forms are used. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Generalized real Schur decomposition whose forms are used. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Generalized real Schur decomposition to reorder and diagnose. |
| selected_blocks | Block indices to move into the leading deflating subspace. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix A. Only the selected triangle is read. |
| metric | Real symmetric positive definite square matrix B. |
| compute_vectors | Whether to compute generalized eigenvectors. |
| triangle | Triangle of matrix and metric supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix A. Only the selected triangle is read. |
| metric | Real symmetric positive definite square matrix B. |
| compute_vectors | Whether to compute generalized eigenvectors. |
| triangle | Triangle of matrix and metric supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix A. Only the selected triangle is read. |
| metric | Real symmetric positive definite square matrix B. |
| first_index | First 0-based eigenvalue index to compute. |
| last_index | Last 0-based eigenvalue index to compute. |
| compute_vectors | Whether to compute selected generalized eigenvectors. |
| triangle | Triangle of matrix and metric supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact Hessenberg reduction returned by real_hessenberg_reduction. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix to reduce. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| hessenberg | Upper Hessenberg matrix in column-major local storage. |
| compute_vectors | Whether to compute Schur vectors of the Hessenberg matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real rectangular coefficient matrix A. |
| right_hand_sides | Dense right-hand-side matrix B with matching row count. |
X. | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | LU factors returned by real_lu_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | LU factors returned by real_lu_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the original coefficient matrix. |
| Scalar uni20::krylov::real_matrix_norm | ( | detail::ColumnMajorLapackMatrix< Scalar > | matrix, |
| MatrixNorm | norm | ||
| ) |
| 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.
| Vector | Opaque vector type. |
| Ops | Matrix-free operator/vector operation type. |
| ops | Matrix-free vector operations and operator application. |
| initial | Initial residual/start vector. |
| params | Solver parameters. |
| 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.
| Vector | Opaque vector type. |
| Ops | Matrix-free operator/vector operation type. |
| ops | Matrix-free vector operations and operator application. |
| initial | Initial residual/start vector. |
| params | Solver parameters. |
| 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.
| Real | float or double. |
| decomposition | Complex Schur decomposition to reorder. |
| leading_order | Input entry indices to move to the leading positions. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| vectors | Real right eigenvector columns of the balanced matrix. |
| balance | Balancing metadata returned by real_nonsymmetric_balance. |
| job | The same balancing operation used for the matrix. |
| RealNonsymmetricEigensystem< Real > uni20::krylov::real_nonsymmetric_eigensystem | ( | uni20::DenseMatrix< Real > | matrix, |
| bool | compute_right_vectors | ||
| ) |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix in column-major local storage. |
| compute_right_vectors | Whether to compute right eigenvectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric positive semidefinite square matrix. |
| tolerance | Pivot stopping threshold, or negative for LAPACK's default. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real rectangular coefficient matrix A. |
| right_hand_sides | Dense right-hand-side matrix B with matching row count. |
| rcond | Relative threshold used by LAPACK to determine the effective rank. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| transpose | Matrix operation applied to the coefficient matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to factor. |
| RealSchurDecomposition< Scalar > uni20::krylov::real_schur | ( | uni20::DenseMatrix< Scalar > | matrix, |
| bool | compute_vectors | ||
| ) |
Compute the real Schur decomposition of a column-major DenseMatrix.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square matrix in current Krylov local storage. |
| compute_vectors | Whether to compute Schur vectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Real Schur decomposition whose Schur form is used. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the tridiagonal matrix. |
| subdiagonal | Subdiagonal/superdiagonal entries. |
| compute_vectors | Whether to compute eigenvectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Real Schur decomposition whose Schur form is used. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to decompose. |
| compute_vectors | Whether to compute full left and right singular vectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to decompose. |
| compute_vectors | Whether to compute full left and right singular vectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real matrix to decompose. |
| first_index | First 0-based decreasing singular-value index to compute. |
| last_index | Last 0-based decreasing singular-value index to compute. |
| compute_vectors | Whether to compute selected left and right singular vectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real rectangular coefficient matrix A. |
| right_hand_sides | Dense right-hand-side matrix B with matching row count. |
| rcond | Relative singular-value threshold used by LAPACK to determine rank. |
A. | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| left | Real square matrix A. |
| right | Real square matrix B. |
| rhs | Right-hand side matrix C with dimensions A.rows() by B.rows(). |
| sign | Equation sign, either +1 or -1. |
| transpose_left | Operation applied to A. |
| transpose_right | Operation applied to B. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix. Only the selected triangle is read. |
| compute_vectors | Whether to compute eigenvectors. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix. Only the selected triangle is read. |
| compute_vectors | Whether to compute eigenvectors. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix. Only the selected triangle is read. |
| first_index | First 0-based eigenvalue index to compute. |
| last_index | Last 0-based eigenvalue index to compute. |
| compute_vectors | Whether to compute selected eigenvectors. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real symmetric square coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric indefinite square matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Bunch-Kaufman factors returned by real_symmetric_indefinite_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real symmetric square coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real symmetric square coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_symmetric_indefinite_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric square matrix. |
| norm | Matrix norm to compute. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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`.
| coefficients | Real SPD band coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| RealSymmetricPositiveDefiniteBandFactorization< Scalar > uni20::krylov::real_symmetric_positive_definite_band_factorization | ( | RealSymmetricPositiveDefiniteBandMatrix< Scalar > | matrix | ) |
Compute a real SPD band Cholesky factorization through LAPACK pbtrf.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square SPD band matrix in LAPACK storage layout. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square SPD matrix to pack. |
| bandwidth | Number of stored offdiagonals. |
| triangle | Triangle of matrix supplied to LAPACK. |
| Scalar uni20::krylov::real_symmetric_positive_definite_band_one_norm | ( | RealSymmetricPositiveDefiniteBandMatrix< Scalar > const & | matrix | ) |
Compute the one-norm of a real SPD band matrix.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real SPD band matrix in LAPACK storage layout. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_symmetric_positive_definite_band_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real SPD band matrix in LAPACK storage layout. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real SPD band coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_symmetric_positive_definite_band_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square SPD band coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric positive definite square matrix. |
| 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`.
| coefficients | Real symmetric positive definite square matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric positive definite square matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric positive definite square matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric positive definite square matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Cholesky factors returned by real_symmetric_positive_definite_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real symmetric positive definite square matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real symmetric positive definite square matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Cholesky factors returned by real_symmetric_positive_definite_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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`.
| coefficients | Real SPD tridiagonal coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| RealSymmetricPositiveDefiniteTridiagonalFactorization< Scalar > uni20::krylov::real_symmetric_positive_definite_tridiagonal_factorization | ( | RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > | matrix | ) |
Compute a real SPD tridiagonal factorization through LAPACK pttrf.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real SPD tridiagonal matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square SPD tridiagonal matrix. |
ptsv and pttrf. | Scalar uni20::krylov::real_symmetric_positive_definite_tridiagonal_one_norm | ( | RealSymmetricPositiveDefiniteTridiagonalMatrix< Scalar > const & | matrix | ) |
Compute the one-norm of a real SPD tridiagonal matrix.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real SPD tridiagonal matrix. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_symmetric_positive_definite_tridiagonal_factorization. |
| original_one_norm | One-norm of the original coefficient matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real SPD tridiagonal matrix. |
1 / (||A||_1 * ||inv(A)||_1). | 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real SPD tridiagonal coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| factorization | Factors returned by real_symmetric_positive_definite_tridiagonal_factorization. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real SPD tridiagonal coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| reduction | Compact tridiagonal reduction returned by real_symmetric_tridiagonal_reduction. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real symmetric matrix to reduce. |
| triangle | Which triangle of matrix contains the symmetric input. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square triangular matrix to invert. |
| triangle | Triangle of matrix supplied to LAPACK. |
| unit_diagonal | Whether the triangular diagonal is implicitly unit. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real rectangular matrix. |
| norm | Matrix norm to compute. |
| triangle | Triangle or trapezoid of matrix supplied to LAPACK. |
| unit_diagonal | Whether to treat the diagonal as all ones. |
| 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).
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| matrix | Real square triangular matrix. |
| triangle | Triangle of matrix supplied to LAPACK. |
| unit_diagonal | Whether the triangular diagonal is implicitly unit. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square triangular coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| transpose | Matrix operation applied to coefficients before solving. |
| unit_diagonal | Whether the triangular diagonal is implicitly unit. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| coefficients | Real square triangular coefficient matrix. |
| right_hand_sides | Dense right-hand-side matrix with matching row count. |
| triangle | Triangle of coefficients supplied to LAPACK. |
| transpose | Matrix operation applied to coefficients before solving. |
| unit_diagonal | Whether the triangular diagonal is implicitly unit. |
| 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.
| Real | float or double. |
| decomposition | Complex Schur decomposition to reorder. |
| leading_order | Input entry indices to move to the leading positions. |
| 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`.
| decomposition | Real Schur decomposition to reorder and diagnose. |
| 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.
| Real | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Generalized real Schur decomposition to reorder. |
| leading_block_order | Input block indices to move to the leading positions. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Real Schur decomposition to reorder. |
| leading_block_order | Input block indices to move to the leading positions. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| decomposition | Real Schur decomposition to reorder. |
| leading_block_order | Input block indices to move to the leading positions. |
| auto uni20::krylov::right_mdspan | ( | RightMatrix< Scalar > & | matrix | ) |
Return a mutable layout-right mdspan view of a prototype right-layout matrix.
| Scalar | Element type. |
| matrix | Matrix whose storage is exposed. |
| auto uni20::krylov::right_mdspan | ( | RightMatrix< Scalar > const & | matrix | ) |
Return an immutable layout-right mdspan view of a prototype right-layout matrix.
| Scalar | Element type. |
| matrix | Matrix whose storage is exposed. |
| void uni20::krylov::scal | ( | Scalar const & | alpha, |
| std::span< Scalar > | vector | ||
| ) |
Scale a local dense vector in place.
| Scalar | Element type. |
| alpha | Scale factor. |
| vector | Vector to scale. |
| 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.
| Scalar | Real scalar type. |
| values | Projected Ritz or Schur eigenvalues. |
| params | Solver parameters defining selector and retained count. |
| 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.
| Scalar | Real scalar type. |
| values | Projected Ritz values. |
| params | Solver parameters defining nev and selector. |
| 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.
| Scalar | Real scalar type. |
| blocks | Real Schur blocks in current projected order. |
| params | Nonsymmetric solve parameters defining selector and retained count. |
| 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.
| Scalar | Real vector-field scalar or complex vector-field scalar. |
| values | Projected Ritz values. |
| residual_bounds | Ritz residual estimates with the same length as values. |
| params | Solver parameters defining nev, optional n_keep, selector, and tolerance. |
| shift_count | Number of exact shifts to select from the unwanted values. |
| 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.
| Scalar | Real or complex vector-field scalar type with real LAPACK coverage. |
| Vector | Opaque vector type. |
| OpOps | Matrix-free transformed-operator provider. |
| BOps | Matrix-free B operation provider. |
| MetricOps | Optional backend-owned metric inner-product provider. |
| op_ops | Matrix-free operation object applying OP. |
| b_ops | Matrix-free operation object applying B. |
| metric_ops | Optional 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. |
| initial | Initial residual/start vector. |
| params | Solver parameters for the transformed problem. |
| options | Transform metadata used for eigenvalue back-transformation. |
| 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.
| Scalar | Real or complex vector-field scalar type with real LAPACK coverage. |
| Vector | Opaque vector type. |
| OpOps | Matrix-free transformed-operator provider. |
| BOps | Matrix-free B operation provider. |
| op_ops | Matrix-free operation object applying OP. |
| b_ops | Matrix-free operation object applying B. |
| initial | Initial residual/start vector. |
| params | Solver parameters for the transformed problem. |
| options | Transform metadata used for eigenvalue back-transformation. |
| 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.
| Scalar | Real or complex vector-field scalar type with real LAPACK coverage. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free operation object. |
| initial | Initial residual/start vector. |
| params | Solver parameters. |
| 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.
| Scalar | Real scalar type. |
| Vector | Opaque vector type. |
| Ops | Matrix-free transformed-operator provider. |
| op_ops | Matrix-free operation object applying OP. |
| initial | Initial residual/start vector. |
| params | Solver parameters for the transformed problem. |
| options | Transform metadata used for eigenvalue back-transformation. |
OP Ritz vectors. | 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.
| Scalar | Real or complex vector-field scalar type with real LAPACK coverage. |
| Vector | Opaque vector type. |
| Ops | Matrix-free vector operation provider. |
| ops | Matrix-free operation object. |
| initial | Initial residual/start vector. |
| params | Solver parameters. |
| symmetric_tridiagonal_view< Real > uni20::krylov::symmetric_tridiagonal | ( | std::span< Real const > | diagonal, |
| std::span< Real const > | offdiagonal | ||
| ) |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the tridiagonal matrix. |
| subdiagonal | Subdiagonal/superdiagonal entries. |
| compute_vectors | Whether to compute eigenvectors. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the tridiagonal matrix. |
| subdiagonal | Subdiagonal/superdiagonal entries. |
| 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.
| Scalar | Real scalar type satisfying uni20::LapackReal. |
| diagonal | Main diagonal of the tridiagonal matrix. |
| subdiagonal | Subdiagonal/superdiagonal entries. |
| first_index | First 0-based eigenvalue index to compute. |
| last_index | Last 0-based eigenvalue index to compute. |
| compute_vectors | Whether to compute selected eigenvectors. |
| std::vector< Scalar > uni20::krylov::symmetric_tridiagonal_eigenvalues | ( | std::vector< Scalar > | diagonal, |
| std::vector< Scalar > | subdiagonal | ||
| ) |
| 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.
| Scalar | Real or complex vector-field scalar type. |
| TimeScalar | Real time for real vector spaces; real or complex time for complex vector spaces. |
| Vector | Opaque vector type. |
| Ops | Matrix-free operation provider. |
| ops | Matrix-free operation object. |
| initial | Initial vector. |
| time | Exponential coefficient. |
| operator_norm_bound | Finite upper bound for ||A||. |
| params | Taylor action parameters. |
exp(t A) initial and diagnostics. | 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.