Fixed bug
parent
2e8d868cd2
commit
7f621af54a
|
@ -332,7 +332,6 @@ public:
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Return size needed for memory buffer in traceExecution
|
// Return size needed for memory buffer in traceExecution
|
||||||
size_t traceSize() const {
|
size_t traceSize() const {
|
||||||
return traceSize_;
|
return traceSize_;
|
||||||
|
@ -537,8 +536,8 @@ struct FunctionalNode: public boost::mpl::fold<TYPES, ExpressionNode<T>,
|
||||||
|
|
||||||
/// Access Expression
|
/// Access Expression
|
||||||
template<class A, size_t N>
|
template<class A, size_t N>
|
||||||
boost::shared_ptr<ExpressionNode<A> > expression() {
|
void reset(const boost::shared_ptr<ExpressionNode<A> >& ptr) {
|
||||||
return static_cast<Argument<T, A, N> &>(*this).expression;
|
static_cast<Argument<T, A, N> &>(*this).expression = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Access Expression, const version
|
/// Access Expression, const version
|
||||||
|
@ -567,7 +566,7 @@ private:
|
||||||
/// Constructor with a unary function f, and input argument e
|
/// Constructor with a unary function f, and input argument e
|
||||||
UnaryExpression(Function f, const Expression<A1>& e1) :
|
UnaryExpression(Function f, const Expression<A1>& e1) :
|
||||||
function_(f) {
|
function_(f) {
|
||||||
this->template expression<A1, 1>() = e1.root();
|
this->template reset<A1, 1>(e1.root());
|
||||||
ExpressionNode<T>::traceSize_ = sizeof(Record) + e1.traceSize();
|
ExpressionNode<T>::traceSize_ = sizeof(Record) + e1.traceSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -630,8 +629,8 @@ private:
|
||||||
BinaryExpression(Function f, const Expression<A1>& e1,
|
BinaryExpression(Function f, const Expression<A1>& e1,
|
||||||
const Expression<A2>& e2) :
|
const Expression<A2>& e2) :
|
||||||
function_(f) {
|
function_(f) {
|
||||||
this->template expression<A1, 1>() = e1.root();
|
this->template reset<A1, 1>(e1.root());
|
||||||
this->template expression<A2, 2>() = e2.root();
|
this->template reset<A2, 2>(e2.root());
|
||||||
ExpressionNode<T>::traceSize_ = //
|
ExpressionNode<T>::traceSize_ = //
|
||||||
sizeof(Record) + e1.traceSize() + e2.traceSize();
|
sizeof(Record) + e1.traceSize() + e2.traceSize();
|
||||||
}
|
}
|
||||||
|
@ -678,7 +677,6 @@ public:
|
||||||
raw = raw + this->template expression<A1, 1>()->traceSize();
|
raw = raw + this->template expression<A1, 1>()->traceSize();
|
||||||
A2 a2 = this->template expression<A2, 2>()->traceExecution(values,
|
A2 a2 = this->template expression<A2, 2>()->traceExecution(values,
|
||||||
record->template trace<A2, 2>(), raw);
|
record->template trace<A2, 2>(), raw);
|
||||||
raw = raw + this->template expression<A2, 2>()->traceSize();
|
|
||||||
|
|
||||||
return function_(a1, a2, record->template jacobian<A1, 1>(),
|
return function_(a1, a2, record->template jacobian<A1, 1>(),
|
||||||
record->template jacobian<A2, 2>());
|
record->template jacobian<A2, 2>());
|
||||||
|
@ -708,9 +706,9 @@ private:
|
||||||
TernaryExpression(Function f, const Expression<A1>& e1,
|
TernaryExpression(Function f, const Expression<A1>& e1,
|
||||||
const Expression<A2>& e2, const Expression<A3>& e3) :
|
const Expression<A2>& e2, const Expression<A3>& e3) :
|
||||||
function_(f) {
|
function_(f) {
|
||||||
this->template expression<A1, 1>() = e1.root();
|
this->template reset<A1, 1>(e1.root());
|
||||||
this->template expression<A2, 2>() = e2.root();
|
this->template reset<A2, 2>(e2.root());
|
||||||
this->template expression<A3, 3>() = e3.root();
|
this->template reset<A3, 3>(e3.root());
|
||||||
ExpressionNode<T>::traceSize_ = //
|
ExpressionNode<T>::traceSize_ = //
|
||||||
sizeof(Record) + e1.traceSize() + e2.traceSize() + e3.traceSize();
|
sizeof(Record) + e1.traceSize() + e2.traceSize() + e3.traceSize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue