4#include <Eigen/SparseCholesky>
16using VecMap = Eigen::Map<Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>>;
18template <
typename Solver> Solver *create_eigen_ldlt_solver() {
22template <
typename Solver>
void destroy_eigen_ldlt_solver(Solver *solver) {}
24template <
typename T,
typename Index>
class EigenLDLTSolverImpl;
27EigenLDLTSolverImpl<double, int32_t> *
28create_eigen_ldlt_solver<EigenLDLTSolverImpl<double, int32_t>>();
31EigenLDLTSolverImpl<float, int32_t> *
32create_eigen_ldlt_solver<EigenLDLTSolverImpl<float, int32_t>>();
35EigenLDLTSolverImpl<double, int64_t> *
36create_eigen_ldlt_solver<EigenLDLTSolverImpl<double, int64_t>>();
39EigenLDLTSolverImpl<float, int64_t> *
40create_eigen_ldlt_solver<EigenLDLTSolverImpl<float, int64_t>>();
43void destroy_eigen_ldlt_solver<EigenLDLTSolverImpl<double, int32_t>>(
44 EigenLDLTSolverImpl<double, int32_t> *solver);
47void destroy_eigen_ldlt_solver<EigenLDLTSolverImpl<float, int32_t>>(
48 EigenLDLTSolverImpl<float, int32_t> *solver);
51void destroy_eigen_ldlt_solver<EigenLDLTSolverImpl<double, int64_t>>(
52 EigenLDLTSolverImpl<double, int64_t> *solver);
55void destroy_eigen_ldlt_solver<EigenLDLTSolverImpl<float, int64_t>>(
56 EigenLDLTSolverImpl<float, int64_t> *solver);
60 typename Eigen::SparseMatrix<T, Eigen::ColMajor>::StorageIndex>
63 static_assert(std::is_same<Index, int32_t>::value ||
64 std::is_same<Index, int64_t>::value,
65 "EigenLDLTWrapper index type must be int32_t or int64_t");
70 using solver_impl = EigenLDLTSolverImpl<T, Index>;
78 destroy_eigen_ldlt_solver<solver_impl>(solver);
83 analyze_pattern(
const Eigen::SparseMatrix<T, Eigen::ColMajor, Index> &matrix);
84 bool factorize(
const Eigen::SparseMatrix<T, Eigen::ColMajor, Index> &matrix);
85 bool solve(
const VecMap<T> &b, VecMap<T> &x);
Definition eigen_solver_interface.hpp:61
The top-level namespace for Graphite.
Definition eigen_solver.cpp:4