00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00034 #ifndef ACADO_TOOLKIT_ADDITION_HPP
00035 #define ACADO_TOOLKIT_ADDITION_HPP
00036
00037
00038 #include <acado/symbolic_operator/symbolic_operator_fwd.hpp>
00039
00040
00041 BEGIN_NAMESPACE_ACADO
00042
00043
00054 class Addition : public BinaryOperator{
00055
00056 public:
00057
00059 Addition();
00060
00062 Addition( Operator *_argument1, Operator *_argument2 );
00063
00065 Addition( const Addition &arg );
00066
00068 ~Addition();
00069
00071 Addition& operator=( const Addition &arg );
00072
00073
00080 virtual returnValue evaluate( int number ,
00081 double *x ,
00082 double *result );
00083
00084
00086 virtual returnValue evaluate( EvaluationBase *x );
00087
00088
00094 virtual Operator* differentiate( int index );
00095
00096
00097
00103 virtual Operator* AD_forward( int dim ,
00104 VariableType *varType ,
00105 int *component,
00106 Operator **seed ,
00107 int &nNewIS ,
00108 TreeProjection ***newIS );
00109
00110
00111
00117 virtual returnValue AD_backward( int dim ,
00118 VariableType *varType ,
00119 int *component,
00120 Operator *seed ,
00121 Operator **df ,
00122 int &nNewIS ,
00123 TreeProjection ***newIS );
00124
00125
00126
00132 virtual returnValue AD_symmetric( int dim ,
00133 VariableType *varType ,
00134 int *component ,
00135 Operator *l ,
00136 Operator **S ,
00137 int dimS ,
00138 Operator **dfS ,
00139 Operator **ldf ,
00140 Operator **H ,
00141 int &nNewLIS ,
00142 TreeProjection ***newLIS ,
00143 int &nNewSIS ,
00144 TreeProjection ***newSIS ,
00145 int &nNewHIS ,
00146 TreeProjection ***newHIS );
00147
00148
00149
00154 virtual Operator* substitute( int index ,
00155 const Operator *sub );
00156
00157
00158
00166 virtual BooleanType isLinearIn( int dim ,
00167 VariableType *varType ,
00168 int *component,
00169 BooleanType *implicit_dep );
00170
00171
00172
00179 virtual BooleanType isPolynomialIn( int dim ,
00180 VariableType *varType ,
00181 int *component,
00182 BooleanType *implicit_dep );
00183
00184
00185
00192 virtual BooleanType isRationalIn( int dim ,
00193 VariableType *varType ,
00194 int *component,
00195 BooleanType *implicit_dep );
00196
00197
00198
00199
00206 virtual MonotonicityType getMonotonicity( );
00207
00208
00209
00217 virtual CurvatureType getCurvature( );
00218
00219
00221 virtual double getValue() const;
00222
00223
00230 virtual returnValue AD_forward( int number ,
00231 double *seed ,
00232 double *df );
00234
00235
00236
00237
00245 virtual returnValue AD_forward( int number ,
00246 double *x ,
00248 double *seed ,
00249 double *f ,
00251 double *df );
00253
00254
00255
00256
00257
00263 virtual returnValue AD_backward( int number ,
00265 double seed ,
00266 double *df );
00268
00269
00270
00278 virtual returnValue AD_forward2( int number ,
00280 double *seed1 ,
00281 double *seed2 ,
00283 double *df ,
00285 double *ddf );
00287
00288
00289
00290
00291
00292
00298 virtual returnValue AD_backward2( int number ,
00300 double seed1 ,
00301 double seed2 ,
00302 double *df ,
00304 double *ddf );
00306
00307
00308
00312 virtual std::ostream& print( std::ostream &stream ) const;
00313
00314
00315
00319 virtual Operator* clone() const;
00320
00321
00325 virtual OperatorName getName();
00326
00327
00328
00329
00330
00331
00332 protected:
00333
00334
00335
00336
00337
00338
00339
00340 protected:
00341
00342 };
00343
00344
00345 CLOSE_NAMESPACE_ACADO
00346
00347
00348
00349 #endif
00350