00001 00028 #pragma once 00029 00030 #include <Eigen/Dense> 00031 00032 #include "SparseSystem.h" 00033 00034 namespace isam { 00035 00036 class Cholesky { 00037 public: 00038 virtual ~Cholesky() {} 00039 00047 virtual void factorize(const SparseSystem& Ab, Eigen::VectorXd* delta = NULL, double lambda = 0.) = 0; 00048 00054 virtual void get_R(SparseSystem& R) = 0; 00055 00060 virtual int* get_order() = 0; 00061 00062 static Cholesky* Create(); 00063 00064 protected: 00065 Cholesky() {} 00066 }; 00067 00068 }