Some fixed size in UnaryExpression
parent
51eab1068f
commit
e5c3f4228a
|
@ -310,7 +310,8 @@ class UnaryExpression: public ExpressionNode<T> {
|
|||
|
||||
public:
|
||||
|
||||
typedef boost::function<T(const A&, boost::optional<Matrix&>)> Function;
|
||||
typedef Eigen::Matrix<double,T::dimension,A::dimension> JacobianTA;
|
||||
typedef boost::function<T(const A&, boost::optional<JacobianTA&>)> Function;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -344,16 +345,16 @@ public:
|
|||
virtual Augmented<T> forward(const Values& values) const {
|
||||
using boost::none;
|
||||
Augmented<A> argument = this->expressionA_->forward(values);
|
||||
Matrix dTdA;
|
||||
JacobianTA dTdA;
|
||||
T t = function_(argument.value(),
|
||||
argument.constant() ? none : boost::optional<Matrix&>(dTdA));
|
||||
argument.constant() ? none : boost::optional<JacobianTA&>(dTdA));
|
||||
return Augmented<T>(t, dTdA, argument.jacobians());
|
||||
}
|
||||
|
||||
/// Trace structure for reverse AD
|
||||
struct Trace: public JacobianTrace<T> {
|
||||
boost::shared_ptr<JacobianTrace<A> > trace1;
|
||||
Matrix dTdA;
|
||||
JacobianTA dTdA;
|
||||
/// Start the reverse AD process
|
||||
virtual void reverseAD(JacobianMap& jacobians) const {
|
||||
trace1->reverseAD(dTdA, jacobians);
|
||||
|
|
Loading…
Reference in New Issue