LinCombOperator is a concrete class implementing a linear combination of two or more Operator instances. More...
#include <op.hh>
Public Member Functions | |
LinCombOperator (LinCombOperator< Scalar > const &op) | |
LinCombOperator (Scalar a1, Operator< Scalar > const &op1, Scalar a2, Operator< Scalar > const &op2) | |
LinCombOperator (Scalar a1, Operator< Scalar > const &op1, Scalar a2, Operator< Scalar > const &op2, Scalar a3, Operator< Scalar > const &op3) | |
LinCombOperator (Scalar a1, Operator< Scalar > const &op1, Scalar a2, Operator< Scalar > const &op2, Scalar a3, Operator< Scalar > const &op3, Scalar a4, Operator< Scalar > const &op4) | |
LinCombOperator (Scalar a1, Operator< Scalar > const &op1, Scalar a2, Operator< Scalar > const &op2, Scalar a3, Operator< Scalar > const &op3, Scalar a4, Operator< Scalar > const &op4, Scalar a5, Operator< Scalar > const &op5) | |
~LinCombOperator () | |
const Space< Scalar > & | getDomain () const |
access to domain and range | |
const Space< Scalar > & | getRange () const |
ostream & | write (ostream &str) const |
Protected Member Functions | |
void | apply (const Vector< Scalar > &x, Vector< Scalar > &val) const |
void | applyDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dx, Vector< Scalar > &dy) const |
void | applyAdjDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dx) const |
Operator< Scalar > * | clone () const |
LinCombOperator is a concrete class implementing a linear combination of two or more Operator instances.
To construct the Operator , where L1, L2 and L3 are Operator instances,
LinCombOperator<float> M(2.0,L1,-3.7,L2,9.0,L3);
Constructors are provided for 2, 3, 4, and 5 summands; larger linear combinations may be built by recursively combining these.
Note that the LinCombOperator constructor is stack-based, that is, the linear combination must be instantiated within the scope of its summands. As with other fundamental RVL classes, this restriction exists to make dangling reference busts impossible. This restriction is necessary, absent enforced employment of smart pointers, since operator subtypes may store references to instances of other, stack-allocated data types.
The range and domain are determined by the operator in the first summand. All subsequent summands are checked for matching domain and range as they are submitted.
Definition at line 2605 of file op.hh.
RVL::LinCombOperator< Scalar >::LinCombOperator | ( | LinCombOperator< Scalar > const & | op | ) |
RVL::LinCombOperator< Scalar >::LinCombOperator | ( | Scalar | a1, | |
Operator< Scalar > const & | op1, | |||
Scalar | a2, | |||
Operator< Scalar > const & | op2 | |||
) |
RVL::LinCombOperator< Scalar >::LinCombOperator | ( | Scalar | a1, | |
Operator< Scalar > const & | op1, | |||
Scalar | a2, | |||
Operator< Scalar > const & | op2, | |||
Scalar | a3, | |||
Operator< Scalar > const & | op3 | |||
) |
RVL::LinCombOperator< Scalar >::LinCombOperator | ( | Scalar | a1, | |
Operator< Scalar > const & | op1, | |||
Scalar | a2, | |||
Operator< Scalar > const & | op2, | |||
Scalar | a3, | |||
Operator< Scalar > const & | op3, | |||
Scalar | a4, | |||
Operator< Scalar > const & | op4 | |||
) |
RVL::LinCombOperator< Scalar >::LinCombOperator | ( | Scalar | a1, | |
Operator< Scalar > const & | op1, | |||
Scalar | a2, | |||
Operator< Scalar > const & | op2, | |||
Scalar | a3, | |||
Operator< Scalar > const & | op3, | |||
Scalar | a4, | |||
Operator< Scalar > const & | op4, | |||
Scalar | a5, | |||
Operator< Scalar > const & | op5 | |||
) |
RVL::LinCombOperator< Scalar >::~LinCombOperator | ( | ) |
void RVL::LinCombOperator< Scalar >::apply | ( | const Vector< Scalar > & | x, | |
Vector< Scalar > & | val | |||
) | const [protected, virtual] |
Implements RVL::Operator< Scalar >.
void RVL::LinCombOperator< Scalar >::applyDeriv | ( | const Vector< Scalar > & | x, | |
const Vector< Scalar > & | dx, | |||
Vector< Scalar > & | dy | |||
) | const [protected, virtual] |
Implements RVL::Operator< Scalar >.
void RVL::LinCombOperator< Scalar >::applyAdjDeriv | ( | const Vector< Scalar > & | x, | |
const Vector< Scalar > & | dy, | |||
Vector< Scalar > & | dx | |||
) | const [protected, virtual] |
Implements RVL::Operator< Scalar >.
Operator<Scalar>* RVL::LinCombOperator< Scalar >::clone | ( | ) | const [protected, virtual] |
Implements RVL::Operator< Scalar >.
const Space<Scalar>& RVL::LinCombOperator< Scalar >::getDomain | ( | ) | const [virtual] |
access to domain and range
Implements RVL::Operator< Scalar >.
const Space<Scalar>& RVL::LinCombOperator< Scalar >::getRange | ( | ) | const [virtual] |
Implements RVL::Operator< Scalar >.
ostream& RVL::LinCombOperator< Scalar >::write | ( | ostream & | str | ) | const [virtual] |
Implements RVL::Writeable.