Reverted interface changes that are unnecessary to make the code compile
parent
a0ae31f0d4
commit
5a44974785
|
@ -149,6 +149,20 @@ void SubgraphPreconditioner::multiplyInPlace(const VectorValues& y, Errors& e) c
|
||||||
Ab2_.multiplyInPlace(x, ei); // use iterator version
|
Ab2_.multiplyInPlace(x, ei); // use iterator version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
// Apply operator A', A'*e = [I inv(R1')*A2']*e = e1 + inv(R1')*A2'*e2
|
||||||
|
VectorValues SubgraphPreconditioner::operator^(const Errors& e) const {
|
||||||
|
|
||||||
|
Errors::const_iterator it = e.begin();
|
||||||
|
VectorValues y = zero();
|
||||||
|
for(auto& key_value: y) {
|
||||||
|
key_value.second = *it;
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
transposeMultiplyAdd2(1.0, it, e.end(), y);
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
// y += alpha*A'*e
|
// y += alpha*A'*e
|
||||||
void SubgraphPreconditioner::transposeMultiplyAdd
|
void SubgraphPreconditioner::transposeMultiplyAdd
|
||||||
|
|
|
@ -125,6 +125,9 @@ namespace gtsam {
|
||||||
/** Apply operator A in place: needs e allocated already */
|
/** Apply operator A in place: needs e allocated already */
|
||||||
void multiplyInPlace(const VectorValues& y, Errors& e) const;
|
void multiplyInPlace(const VectorValues& y, Errors& e) const;
|
||||||
|
|
||||||
|
/** Apply operator A' */
|
||||||
|
VectorValues operator^(const Errors& e) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add A'*e to y
|
* Add A'*e to y
|
||||||
* y += alpha*A'*[e1;e2] = [alpha*e1; alpha*inv(R1')*A2'*e2]
|
* y += alpha*A'*[e1;e2] = [alpha*e1; alpha*inv(R1')*A2'*e2]
|
||||||
|
|
|
@ -59,6 +59,11 @@ namespace gtsam {
|
||||||
/** Access b vector */
|
/** Access b vector */
|
||||||
const Vector& b() const { return b_; }
|
const Vector& b() const { return b_; }
|
||||||
|
|
||||||
|
/** Apply operator A'*e */
|
||||||
|
Vector operator^(const Vector& e) const {
|
||||||
|
return A_.transpose() * e;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print with optional string
|
* Print with optional string
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue