MCPcopy Create free account
hub / github.com/TUC-ProAut/libRSF / Inverse

Function Inverse

include/VectorMath.h:78–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76
77 template <int Dim, typename T>
78 MatrixT<T, Dim, Dim> Inverse(MatrixT<T, Dim, Dim> A)
79 {
80 /** compute SVD */
81 Eigen::SelfAdjointEigenSolver<MatrixT<T, Dim, Dim>> SAES(A);
82
83 /** compute tolerance (idea from OKVIS) */
84 T Tolerance = std::numeric_limits<T>::epsilon() * A.cols() * SAES.eigenvalues().array().maxCoeff();
85
86 /** set small eigen values to zero */
87 VectorT<T, Dim> EigValInv = Vector((SAES.eigenvalues().array() > Tolerance).select(SAES.eigenvalues().array().inverse(), 0));
88
89 /** use modified eigen values to compute sqrt */
90 return SAES.eigenvectors() * EigValInv.asDiagonal() * SAES.eigenvectors().transpose();
91 }
92
93 void RobustSqrtAndInvSqrt(const Matrix &Mat, Matrix &MatSqrt, Matrix &MatSqrtInv);
94

Callers 1

doVariationalStepMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected