The class COperator is an auxiliary class to use C-Functions within a function evaluation tree. More...
#include <c_operator.hpp>
Public Member Functions | |
virtual returnValue | AD_backward (int dim, VariableType *varType, int *component, Operator *seed, Operator **df, int &nNewIS, TreeProjection ***newIS) |
virtual returnValue | AD_backward (int number, double seed, double *df) |
virtual returnValue | AD_backward2 (int number, double seed1, double seed2, double *df, double *ddf) |
virtual Operator * | AD_forward (int dim, VariableType *varType, int *component, Operator **seed, int &nNewIS, TreeProjection ***newIS) |
virtual returnValue | AD_forward (int number, double *seed, double *df) |
virtual returnValue | AD_forward (int number, double *x, double *seed, double *f, double *df) |
virtual returnValue | AD_forward2 (int number, double *seed1, double *seed2, double *df, double *ddf) |
virtual returnValue | AD_symmetric (int dim, VariableType *varType, int *component, Operator *l, Operator **S, int dimS, Operator **dfS, Operator **ldf, Operator **H, int &nNewLIS, TreeProjection ***newLIS, int &nNewSIS, TreeProjection ***newSIS, int &nNewHIS, TreeProjection ***newHIS) |
virtual returnValue | clearBuffer () |
virtual Operator * | clone () const |
COperator () | |
COperator (const CFunction &fcn, const Expression &arg, int component_) | |
COperator (const COperator &arg) | |
virtual Operator * | differentiate (int index) |
virtual returnValue | enumerateVariables (SymbolicIndexList *indexList) |
virtual returnValue | evaluate (int number, double *x, double *result) |
virtual returnValue | evaluate (EvaluationBase *x) |
virtual CurvatureType | getCurvature () |
virtual MonotonicityType | getMonotonicity () |
virtual OperatorName | getName () |
int | increaseID () |
virtual BooleanType | isDependingOn (VariableType var) const |
virtual BooleanType | isDependingOn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep) |
virtual BooleanType | isLinearIn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep) |
virtual NeutralElement | isOneOrZero () const |
virtual BooleanType | isPolynomialIn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep) |
virtual BooleanType | isRationalIn (int dim, VariableType *varType, int *component, BooleanType *implicit_dep) |
virtual BooleanType | isSymbolic () const |
virtual BooleanType | isVariable (VariableType &varType, int &component) const |
virtual returnValue | loadIndices (SymbolicIndexList *indexList) |
COperator & | operator= (const COperator &arg) |
virtual std::ostream & | print (std::ostream &stream) const |
virtual returnValue | setCurvature (CurvatureType curvature_) |
virtual returnValue | setMonotonicity (MonotonicityType monotonicity_) |
virtual Operator * | substitute (int index, const Operator *sub) |
~COperator () | |
Protected Member Functions | |
void | copy (const COperator &arg) |
void | deleteAll () |
Protected Attributes | |
Expression | argument |
uint | bufferSize |
CFunction | cFunction |
int | component |
double ** | cresult |
double ** | d_cresult |
double ** | d_result |
BooleanType | first |
int | globalTypeID |
int * | idx |
double ** | result |
Static Protected Attributes | |
static int | counter = 0 |
The class COperator is an auxiliary class to use C-Functions within a function evaluation tree.
The class COperator is designed to be an auxiliary class to use C-Functions within a function evaluation tree.
Definition at line 58 of file c_operator.hpp.
Default constructor.
Definition at line 46 of file c_operator.cpp.
COperator::COperator | ( | const CFunction & | fcn, |
const Expression & | arg, | ||
int | component_ | ||
) |
Default constructor.
Definition at line 63 of file c_operator.cpp.
COperator::COperator | ( | const COperator & | arg | ) |
Copy constructor (deep copy).
Definition at line 100 of file c_operator.cpp.
Default destructor.
Definition at line 102 of file c_operator.cpp.
returnValue COperator::AD_backward | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
Operator * | seed, | ||
Operator ** | df, | ||
int & | nNewIS, | ||
TreeProjection *** | newIS | ||
) | [virtual] |
Automatic Differentiation in backward mode on the symbolic
level. This function generates an expression for a
backward derivative
dim | number of directions |
varType | the variable types |
component | and their components |
seed | the backward seed |
df | the result |
nNewIS | the number of new IS |
newIS | the new IS-pointer |
Implements SmoothOperator.
Definition at line 260 of file c_operator.cpp.
returnValue COperator::AD_backward | ( | int | number, |
double | seed, | ||
double * | df | ||
) | [virtual] |
Automatic Differentiation in backward mode based on
buffered values
number | the buffer position |
seed | the seed |
df | the derivative of the expression |
Implements SmoothOperator.
Definition at line 450 of file c_operator.cpp.
returnValue COperator::AD_backward2 | ( | int | number, |
double | seed1, | ||
double | seed2, | ||
double * | df, | ||
double * | ddf | ||
) | [virtual] |
Automatic Differentiation in backward mode for 2nd order
derivatives based on buffered values.
number | the buffer position |
seed1 | the seed1 |
seed2 | the seed2 |
df | the 1st derivative of the expression |
ddf | the 2nd derivative of the expression |
Implements SmoothOperator.
Definition at line 497 of file c_operator.cpp.
Operator * COperator::AD_forward | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
Operator ** | seed, | ||
int & | nNewIS, | ||
TreeProjection *** | newIS | ||
) | [virtual] |
Automatic Differentiation in forward mode on the symbolic
level. This function generates an expression for a
forward derivative
dim | dimension of the seed |
varType | the variable types |
component | and their components |
seed | the forward seed |
nNewIS | the number of new IS |
newIS | the new IS-pointer |
Implements SmoothOperator.
Definition at line 247 of file c_operator.cpp.
returnValue COperator::AD_forward | ( | int | number, |
double * | seed, | ||
double * | df | ||
) | [virtual] |
Automatic Differentiation in forward mode.
This function uses the intermediate
results from a buffer
number | storage position |
seed | the seed |
df | the derivative of the expression |
Implements SmoothOperator.
Definition at line 429 of file c_operator.cpp.
returnValue COperator::AD_forward | ( | int | number, |
double * | x, | ||
double * | seed, | ||
double * | f, | ||
double * | df | ||
) | [virtual] |
Automatic Differentiation in forward mode.
This function stores the intermediate
results in a buffer (needed for 2nd order automatic
differentiation in backward mode)
number | storage position |
x | The evaluation point x |
seed | the seed |
f | the value of the expression at x |
df | the derivative of the expression |
Implements SmoothOperator.
Definition at line 384 of file c_operator.cpp.
returnValue COperator::AD_forward2 | ( | int | number, |
double * | seed1, | ||
double * | seed2, | ||
double * | df, | ||
double * | ddf | ||
) | [virtual] |
Automatic Differentiation in forward mode for
2nd derivatives.
This function uses intermediate
results from a buffer.
number | the buffer position |
seed1 | the seed |
seed2 | the seed for the first derivative |
df | the derivative of the expression |
ddf | the 2nd derivative of the expression |
Implements SmoothOperator.
Definition at line 456 of file c_operator.cpp.
returnValue COperator::AD_symmetric | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
Operator * | l, | ||
Operator ** | S, | ||
int | dimS, | ||
Operator ** | dfS, | ||
Operator ** | ldf, | ||
Operator ** | H, | ||
int & | nNewLIS, | ||
TreeProjection *** | newLIS, | ||
int & | nNewSIS, | ||
TreeProjection *** | newSIS, | ||
int & | nNewHIS, | ||
TreeProjection *** | newHIS | ||
) | [virtual] |
Automatic Differentiation in symmetric mode on the symbolic
level. This function generates an expression for a
second order derivative.
dim | number of directions |
varType | the variable types |
component | and their components |
l | the backward seed |
S | forward seed matrix |
dimS | dimension of forward seed |
dfS | first order foward result |
ldf | first order backward result |
H | upper trianglular part of the Hessian |
nNewLIS | the number of newLIS |
newLIS | the new LIS-pointer |
nNewSIS | the number of newSIS |
newSIS | the new SIS-pointer |
nNewHIS | the number of newHIS |
newHIS | the new HIS-pointer |
Implements SmoothOperator.
Definition at line 273 of file c_operator.cpp.
returnValue COperator::clearBuffer | ( | ) | [virtual] |
Clears the buffer and resets the buffer size
to 1.
Implements SmoothOperator.
Definition at line 517 of file c_operator.cpp.
Operator * COperator::clone | ( | ) | const [virtual] |
Provides a deep copy of the expression.
Implements SmoothOperator.
Definition at line 511 of file c_operator.cpp.
void COperator::copy | ( | const COperator & | arg | ) | [protected] |
Protected copy routine.
Definition at line 119 of file c_operator.cpp.
void COperator::deleteAll | ( | ) | [protected] |
Protected delete routine.
Definition at line 167 of file c_operator.cpp.
Operator * COperator::differentiate | ( | int | index | ) | [virtual] |
Returns the derivative of the expression with respect
to the variable var(index).
index | diff. index |
Implements SmoothOperator.
Definition at line 238 of file c_operator.cpp.
returnValue COperator::enumerateVariables | ( | SymbolicIndexList * | indexList | ) | [virtual] |
Enumerates all variables based on a common
IndexList.
Implements SmoothOperator.
Definition at line 530 of file c_operator.cpp.
returnValue COperator::evaluate | ( | int | number, |
double * | x, | ||
double * | result | ||
) | [virtual] |
Evaluates the expression and stores the intermediate
results in a buffer (needed for automatic differentiation
in backward mode)
number | storage position |
x | the input variable x |
result | the result |
Implements SmoothOperator.
Definition at line 191 of file c_operator.cpp.
returnValue COperator::evaluate | ( | EvaluationBase * | x | ) | [virtual] |
Evaluates the expression (templated version)
Implements SmoothOperator.
Definition at line 230 of file c_operator.cpp.
CurvatureType COperator::getCurvature | ( | ) | [virtual] |
Returns the curvature of the expression
Implements SmoothOperator.
Definition at line 366 of file c_operator.cpp.
MonotonicityType COperator::getMonotonicity | ( | ) | [virtual] |
Returns the monotonicity of the expression.
Implements SmoothOperator.
Definition at line 360 of file c_operator.cpp.
OperatorName COperator::getName | ( | ) | [virtual] |
Asks the expression for its name.
Implements SmoothOperator.
Definition at line 547 of file c_operator.cpp.
int COperator::increaseID | ( | ) |
ID Operator.
Definition at line 116 of file c_operator.cpp.
BooleanType COperator::isDependingOn | ( | VariableType | var | ) | const [virtual] |
Asks the expression whether it is depending on a certian type of
variable.
Implements SmoothOperator.
Definition at line 308 of file c_operator.cpp.
BooleanType COperator::isDependingOn | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
BooleanType * | implicit_dep | ||
) | [virtual] |
Checks whether the expression is depending on a variable
dim | number of directions |
varType | the variable types |
component | and their components |
implicit_dep | implicit dependencies |
Implements SmoothOperator.
Definition at line 319 of file c_operator.cpp.
BooleanType COperator::isLinearIn | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
BooleanType * | implicit_dep | ||
) | [virtual] |
Checks whether the expression is linear in
(or not depending on) a variable
dim | number of directions |
varType | the variable types |
component | and their components |
implicit_dep | implicit dependencies |
Implements SmoothOperator.
Definition at line 333 of file c_operator.cpp.
NeutralElement COperator::isOneOrZero | ( | ) | const [virtual] |
Checks whether the expression is zero or one
Implements SmoothOperator.
Definition at line 301 of file c_operator.cpp.
BooleanType COperator::isPolynomialIn | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
BooleanType * | implicit_dep | ||
) | [virtual] |
Checks whether the expression is polynomial in
the specified variables
dim | number of directions |
varType | the variable types |
component | and their components |
implicit_dep | implicit dependencies |
Implements SmoothOperator.
Definition at line 342 of file c_operator.cpp.
BooleanType COperator::isRationalIn | ( | int | dim, |
VariableType * | varType, | ||
int * | component, | ||
BooleanType * | implicit_dep | ||
) | [virtual] |
Checks whether the expression is rational in
the specified variables
dim | number of directions |
varType | the variable types |
component | and their components |
implicit_dep | implicit dependencies |
Implements SmoothOperator.
Definition at line 351 of file c_operator.cpp.
BooleanType COperator::isSymbolic | ( | ) | const [virtual] |
Asks whether all elements are purely symbolic.
Implements SmoothOperator.
Definition at line 573 of file c_operator.cpp.
BooleanType COperator::isVariable | ( | VariableType & | varType, |
int & | component | ||
) | const [virtual] |
Asks the expression whether it is a variable.
Implements SmoothOperator.
Definition at line 553 of file c_operator.cpp.
returnValue COperator::loadIndices | ( | SymbolicIndexList * | indexList | ) | [virtual] |
The function loadIndices passes an IndexList through
the whole expression tree. Whenever a variable gets the
IndexList it tries to make an entry. However if a
variable recognices that it has already been added
before it will not be allowed to make a second entry.
Note that all variables, in paticular the intermediate
states, will keep in mind whether they were allowed
to make an entry or not. This guarantees that
intermediate states are never evaluated twice if they
occur at several knots of the tree.
THIS FUNCTION IS FOR INTERNAL USE ONLY.
PLEASE CALL THIS FUNTION AT MOST ONES FOR AN EXPRESSION
AS A KIND OF INIT ROUTINE.
indexList | The index list to be filled with entries |
Implements SmoothOperator.
Definition at line 559 of file c_operator.cpp.
Assignment Operator (deep copy).
Definition at line 105 of file c_operator.cpp.
std::ostream & COperator::print | ( | std::ostream & | stream | ) | const [virtual] |
Prints the expression into a stream.
Implements SmoothOperator.
Definition at line 504 of file c_operator.cpp.
returnValue COperator::setCurvature | ( | CurvatureType | curvature_ | ) | [virtual] |
Overwrites the curvature of the expression.
(For the case that the curvature is explicitly known)
Implements SmoothOperator.
Definition at line 378 of file c_operator.cpp.
returnValue COperator::setMonotonicity | ( | MonotonicityType | monotonicity_ | ) | [virtual] |
Overwrites the monotonicity of the expression.
(For the case that the monotonicity is explicitly known)
Implements SmoothOperator.
Definition at line 372 of file c_operator.cpp.
Operator * COperator::substitute | ( | int | index, |
const Operator * | sub | ||
) | [virtual] |
Substitutes var(index) with the expression sub.
index | subst. index |
sub | the substitution |
Implements SmoothOperator.
Definition at line 294 of file c_operator.cpp.
Expression COperator::argument [protected] |
The argument for the evaluation
Definition at line 460 of file c_operator.hpp.
uint COperator::bufferSize [protected] |
The size of the buffer.
Definition at line 469 of file c_operator.hpp.
CFunction COperator::cFunction [protected] |
The C function to be evaluated
Definition at line 459 of file c_operator.hpp.
int COperator::component [protected] |
The component of the CFunction
Definition at line 468 of file c_operator.hpp.
BEGIN_NAMESPACE_ACADO int COperator::counter = 0 [static, protected] |
counter of the C-Operators
Definition at line 475 of file c_operator.hpp.
double** COperator::cresult [protected] |
The results of the evaluation of the Cfunction
Definition at line 465 of file c_operator.hpp.
double** COperator::d_cresult [protected] |
The results for the derivative of the Cfunction
Definition at line 466 of file c_operator.hpp.
double** COperator::d_result [protected] |
The results for the derivative of the argument
Definition at line 463 of file c_operator.hpp.
BooleanType COperator::first [protected] |
Whether this compontent is evaluated first
Definition at line 471 of file c_operator.hpp.
int COperator::globalTypeID [protected] |
global ID of the C-Operator
Definition at line 474 of file c_operator.hpp.
int* COperator::idx [protected] |
variable index list
Definition at line 473 of file c_operator.hpp.
double** COperator::result [protected] |
The results of the evaluation of the argument
Definition at line 462 of file c_operator.hpp.