Class ldlt_ext¶
Defined in File ldlt_ext.hpp
Page Contents
Class Documentation¶
-
class ldlt_ext¶
LDLT factorization for LMI.
LDL^T square-root-free version
Option allow semidefinite
A matrix A in R^{m x m} is positive definite iff v’ A v > 0 for all v in R^n.
O(p^2) per iteration, independent of N
Public Functions
-
inline explicit ldlt_ext(size_t N)¶
Construct a new ldlt ext object.
- Parameters
N – [in] dimension
-
inline auto factorize(const Mat &A) -> bool¶
Perform LDLT Factorization.
If $A$ is positive definite, then $p$ is zero. If it is not, then $p$ is a positive integer, such that $v = R^-1 e_p$ is a certificate vector to make $v’*A[:p,:p]*v < 0$
- Parameters
A – [in] Symmetric Matrix
-
template<typename Callable, bool Allow_semidefinite = false>
inline auto factor(Callable &&getA) -> bool¶ Perform LDLT Factorization (Lazy evaluation)
See also: factorize()
- Template Parameters
Fn –
- Parameters
getA – [in] function to access the elements of A
-
inline auto is_spd() const noexcept -> bool¶
Is $A$ symmetric positive definite (spd)
- Returns
true
- Returns
false
-
auto witness() -> double¶
witness that certifies $A$ is not symmetric positive definite (spd)
- Returns
auto
-
auto sym_quad(const Vec &A) const -> double¶
Calculate v’*{A}(p,p)*v.
- Parameters
A – [in]
- Returns
double
-
auto sqrt() -> Mat¶