26 int ldl_solver_eigen(
const Eigen::MatrixXd& A,
const Eigen::VectorXd& v, Eigen::MatrixXd& L, Eigen::VectorXd& D, Eigen::VectorXd& vtmp, Eigen::VectorXd& q)
28 const int n =
static_cast<int>(A.rows());
32 if(A.cols()!=n || v.rows()!=n || L.rows()!=n || L.cols()!=n || D.rows()!=n || vtmp.rows()!=n || q.rows()!=n)
35 for(
int i=0;i<n;++i) {
38 for(
int j=0;j<=i-1;++j)
39 D(i) -= D(j)*L(i,j)*L(i,j);
41 for(
int j=1;j<n;++j) {
45 for(
int k=0;k<=i-1;++k)
46 L(j,i) -= L(j,k)*L(i,k)*D(k)/D(i);
51 for(
int i=0;i<n;++i) {
54 for(
int j=0;j<=i-1;++j)
55 vtmp(i) -= L(i,j)*vtmp(j);
58 for(
int i=n-1;i>=0;--i) {
61 for(
int j=i+1;j<n;++j)
67 for(
int i=0;i<n;++i) {
74 for(
int i=0;i<n;++i) {
75 for(
int j=i+1;j<n;++j) {