55 itkAssertOrThrowMacro(A.rows() == A.cols(),
"SolveSymmetricPositiveDefinite requires a square matrix");
56 itkAssertOrThrowMacro(A.rows() == b.size(),
"SolveSymmetricPositiveDefinite requires matching b length");
57 const unsigned int n = A.rows();
58 Eigen::Map<const detail::CholeskyRowMajor<T>> aMap(A.data_block(), n, n);
59 Eigen::Map<const detail::CholeskyVector<T>> bMap(b.data_block(), n);
61 Eigen::Map<detail::CholeskyVector<T>> xMap(x.data_block(), n);
62 xMap = aMap.template selfadjointView<Eigen::Lower>().ldlt().solve(bMap);
72 itkAssertOrThrowMacro(A.rows() == A.cols(),
"CholeskyLowerTriangle requires a square matrix");
73 const unsigned int n = A.rows();
74 Eigen::Map<const detail::CholeskyRowMajor<T>> aMap(A.data_block(), n, n);
75 const auto llt = aMap.template selfadjointView<Eigen::Lower>().llt();
76 if (llt.info() != Eigen::Success)
78 itkGenericExceptionMacro(
"CholeskyLowerTriangle requires a positive-definite matrix");
81 vnl_matrix<T> result(n, n);
82 Eigen::Map<detail::CholeskyRowMajor<T>> rMap(result.data_block(), n, n);