smooth
A C++ library for Lie theory
|
Sparse versions of certain Lie group methods. More...
#include <Eigen/Sparse>
#include "detail/utils.hpp"
#include "lie_groups.hpp"
#include "detail/lie_group_sparse_impl.hpp"
Go to the source code of this file.
Classes | |
struct | traits::lie_sparse< G > |
Traits that defines sparsity patterns for various groups. More... | |
Functions | |
template<LieGroup G> | |
void | ad_sparse (Eigen::SparseMatrix< Scalar< G > > &sp, const Tangent< G > &a) |
Sparse ad. | |
template<LieGroup G, bool Inv = false> | |
void | dr_exp_sparse (Eigen::SparseMatrix< Scalar< G > > &sp, const Tangent< G > &a, Eigen::Index i0=0) |
Sparse dr_exp. | |
template<LieGroup G> | |
void | dr_expinv_sparse (Eigen::SparseMatrix< Scalar< G > > &sp, const Tangent< G > &a, Eigen::Index i0=0) |
Sparse dr_expinv. | |
template<LieGroup G, bool Inv = false> | |
void | d2r_exp_sparse (Eigen::SparseMatrix< Scalar< G > > &sp, const Tangent< G > &a, Eigen::Index i0=0) |
Sparse d2r_exp. | |
template<LieGroup G> | |
void | d2r_expinv_sparse (Eigen::SparseMatrix< Scalar< G > > &sp, const Tangent< G > &a, Eigen::Index i0=0) |
Sparse d2r_expinv. | |
Variables | |
template<LieGroup G> | |
std::array< Eigen::SparseMatrix< Scalar< G > >, Dof< G > > | generators_sparse |
Generators of lie algebra (inline variable). | |
template<LieGroup G> | |
Eigen::SparseMatrix< Scalar< G > > | ad_sparse_pattern |
Sparsity pattern of ad_sparse (inline variable). | |
template<LieGroup G> | |
Eigen::SparseMatrix< Scalar< G > > | d_exp_sparse_pattern |
Sparsity pattern of dr_exp_sparse, dr_expinv_sparse (inline variable). | |
template<LieGroup G> | |
Eigen::SparseMatrix< Scalar< G > > | d2_exp_sparse_pattern |
Sparsity pattern of d2r_exp_sparse(), d2r_expinv_sparse() (inline variable). | |
Sparse versions of certain Lie group methods.
Implemented methods contain two parts: a pattern and the function itself. The pattern is in the form of an inline sparse matrix variable that is pre-allocated with the appropriate nonzeros.
The intended usage is to copy a pattern and use the resulting variable in calls to these methods. That way no additional allocation is needed.
Example:
Definition in file lie_sparse.hpp.
void ad_sparse | ( | Eigen::SparseMatrix< Scalar< G > > & | sp, |
const Tangent< G > & | a | ||
) |
Sparse ad.
[in,out] | sp | allocated and compressed sparse matrix |
[in] | a | Lie algebra element |
void d2r_exp_sparse | ( | Eigen::SparseMatrix< Scalar< G > > & | sp, |
const Tangent< G > & | a, | ||
Eigen::Index | i0 = 0 |
||
) |
Sparse d2r_exp.
G | Lie group |
Inv | compute d2r_expinv |
[in,out] | sp | allocated and compressed sparse matrix |
[in] | a | Lie algebra element |
[in] | i0 | block index (row and column) in sp where result is inserted |
|
inline |
Sparse d2r_expinv.
G | Lie group |
[in,out] | sp | allocated and compressed sparse matrix |
[in] | a | Lie algebra element |
[in] | i0 | block index (row and column) in sp where result is inserted |
void dr_exp_sparse | ( | Eigen::SparseMatrix< Scalar< G > > & | sp, |
const Tangent< G > & | a, | ||
Eigen::Index | i0 = 0 |
||
) |
Sparse dr_exp.
G | Lie group |
Inv | compute dr_expinv |
[in,out] | sp | allocated and compressed sparse matrix |
[in] | a | Lie algebra element |
[in] | i0 | block index (row and column) in sp where result is inserted |
void dr_expinv_sparse | ( | Eigen::SparseMatrix< Scalar< G > > & | sp, |
const Tangent< G > & | a, | ||
Eigen::Index | i0 = 0 |
||
) |
Sparse dr_expinv.
G | Lie group |
[in,out] | sp | allocated and compressed sparse matrix |
[in] | a | Lie algebra element |
[in] | i0 | block index (row and column) in sp where result is inserted |
Sparsity pattern of ad_sparse (inline variable).
Definition at line 62 of file lie_sparse.hpp.
Sparsity pattern of d2r_exp_sparse(), d2r_expinv_sparse() (inline variable).
Definition at line 144 of file lie_sparse.hpp.
Sparsity pattern of dr_exp_sparse, dr_expinv_sparse (inline variable).
Definition at line 89 of file lie_sparse.hpp.
Generators of lie algebra (inline variable).
Definition at line 48 of file lie_sparse.hpp.