inlined a fully specialized function template defined in a .hpp
parent
a94835a2e4
commit
bd3f9db7df
|
@ -58,7 +58,7 @@ class Expression;
|
|||
class JacobianMap {
|
||||
const FastVector<Key>& keys_;
|
||||
VerticalBlockMatrix& Ab_;
|
||||
public:
|
||||
public:
|
||||
JacobianMap(const FastVector<Key>& keys, VerticalBlockMatrix& Ab) :
|
||||
keys_(keys), Ab_(Ab) {
|
||||
}
|
||||
|
@ -98,11 +98,16 @@ struct CallRecord {
|
|||
template<int ROWS, int COLS>
|
||||
void handleLeafCase(const Eigen::Matrix<double, ROWS, COLS>& dTdA,
|
||||
JacobianMap& jacobians, Key key) {
|
||||
// if (ROWS == -1 && COLS == -1 ) {
|
||||
// jacobians(key) += dTdA;
|
||||
// } else {
|
||||
jacobians(key).block < ROWS, COLS > (0, 0) += dTdA; // block makes HUGE difference
|
||||
// }
|
||||
|
||||
}
|
||||
/// Handle Leaf Case for Dynamic Matrix type (slower)
|
||||
template<>
|
||||
void handleLeafCase(
|
||||
inline void handleLeafCase(
|
||||
const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>& dTdA,
|
||||
JacobianMap& jacobians, Key key) {
|
||||
jacobians(key) += dTdA;
|
||||
|
@ -140,7 +145,7 @@ class ExecutionTrace {
|
|||
Key key;
|
||||
CallRecord<Dim>* ptr;
|
||||
} content;
|
||||
public:
|
||||
public:
|
||||
/// Pointer always starts out as a Constant
|
||||
ExecutionTrace() :
|
||||
kind(Constant) {
|
||||
|
@ -242,7 +247,7 @@ struct Select<2, A> {
|
|||
template<class T>
|
||||
class ExpressionNode {
|
||||
|
||||
protected:
|
||||
protected:
|
||||
|
||||
size_t traceSize_;
|
||||
|
||||
|
@ -251,7 +256,7 @@ protected:
|
|||
traceSize_(traceSize) {
|
||||
}
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Destructor
|
||||
virtual ~ExpressionNode() {
|
||||
|
@ -295,7 +300,7 @@ class ConstantExpression: public ExpressionNode<T> {
|
|||
|
||||
friend class Expression<T> ;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Return value
|
||||
virtual T value(const Values& values) const {
|
||||
|
@ -326,7 +331,7 @@ class LeafExpression: public ExpressionNode<T> {
|
|||
|
||||
friend class Expression<value_type> ;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Return keys that play in this expression
|
||||
virtual std::set<Key> keys() const {
|
||||
|
@ -372,7 +377,7 @@ class LeafExpression<T, DefaultChart<T> >: public ExpressionNode<T> {
|
|||
|
||||
friend class Expression<T> ;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Return keys that play in this expression
|
||||
virtual std::set<Key> keys() const {
|
||||
|
@ -623,13 +628,13 @@ struct FunctionalNode {
|
|||
template<class T, class A1>
|
||||
class UnaryExpression: public FunctionalNode<T, boost::mpl::vector<A1> >::type {
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
typedef boost::function<T(const A1&, typename OptionalJacobian<T, A1>::type)> Function;
|
||||
typedef typename FunctionalNode<T, boost::mpl::vector<A1> >::type Base;
|
||||
typedef typename Base::Record Record;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
Function function_;
|
||||
|
||||
|
@ -642,7 +647,7 @@ private:
|
|||
|
||||
friend class Expression<T> ;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Return value
|
||||
virtual T value(const Values& values) const {
|
||||
|
@ -667,7 +672,7 @@ public:
|
|||
template<class T, class A1, class A2>
|
||||
class BinaryExpression: public FunctionalNode<T, boost::mpl::vector<A1, A2> >::type {
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
typedef boost::function<
|
||||
T(const A1&, const A2&, typename OptionalJacobian<T, A1>::type,
|
||||
|
@ -675,7 +680,7 @@ public:
|
|||
typedef typename FunctionalNode<T, boost::mpl::vector<A1, A2> >::type Base;
|
||||
typedef typename Base::Record Record;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
Function function_;
|
||||
|
||||
|
@ -692,7 +697,7 @@ private:
|
|||
friend class Expression<T> ;
|
||||
friend class ::ExpressionFactorBinaryTest;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Return value
|
||||
virtual T value(const Values& values) const {
|
||||
|
@ -721,7 +726,7 @@ public:
|
|||
template<class T, class A1, class A2, class A3>
|
||||
class TernaryExpression: public FunctionalNode<T, boost::mpl::vector<A1, A2, A3> >::type {
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
typedef boost::function<
|
||||
T(const A1&, const A2&, const A3&, typename OptionalJacobian<T, A1>::type,
|
||||
|
@ -729,7 +734,7 @@ public:
|
|||
typedef typename FunctionalNode<T, boost::mpl::vector<A1, A2, A3> >::type Base;
|
||||
typedef typename Base::Record Record;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
Function function_;
|
||||
|
||||
|
@ -746,7 +751,7 @@ private:
|
|||
|
||||
friend class Expression<T> ;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
/// Return value
|
||||
virtual T value(const Values& values) const {
|
||||
|
|
Loading…
Reference in New Issue