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
00035 #ifndef ACADO_TOOLKIT_PRODUCT_HPP
00036 #define ACADO_TOOLKIT_PRODUCT_HPP
00037
00038
00039 #include <acado/symbolic_operator/symbolic_operator_fwd.hpp>
00040
00041
00042 BEGIN_NAMESPACE_ACADO
00043
00044
00055 class Product : public BinaryOperator{
00056
00057 public:
00058
00060 Product();
00061
00063 Product( Operator *_argument1, Operator *_argument2 );
00064
00066 Product( const Product &arg );
00067
00069 ~Product();
00070
00072 Product& operator=( const Product &arg );
00073
00074
00075
00082 virtual returnValue evaluate( int number ,
00083 double *x ,
00084 double *result );
00085
00086
00088 virtual returnValue evaluate( EvaluationBase *x );
00089
00090
00096 virtual Operator* differentiate( int index );
00097
00098
00099
00105 virtual Operator* AD_forward( int dim ,
00106 VariableType *varType ,
00107 int *component,
00108 Operator **seed ,
00109 int &nNewIS ,
00110 TreeProjection ***newIS );
00111
00112
00113
00119 virtual returnValue AD_backward( int dim ,
00120 VariableType *varType ,
00121 int *component,
00122 Operator *seed ,
00123 Operator **df ,
00124 int &nNewIS ,
00125 TreeProjection ***newIS );
00126
00127
00128
00134 virtual returnValue AD_symmetric( int dim ,
00135 VariableType *varType ,
00136 int *component ,
00137 Operator *l ,
00138 Operator **S ,
00139 int dimS ,
00140 Operator **dfS ,
00141 Operator **ldf ,
00142 Operator **H ,
00143 int &nNewLIS ,
00144 TreeProjection ***newLIS ,
00145 int &nNewSIS ,
00146 TreeProjection ***newSIS ,
00147 int &nNewHIS ,
00148 TreeProjection ***newHIS );
00149
00150
00155 virtual Operator* substitute( int index ,
00156 const Operator *sub );
00157
00158
00159
00167 virtual BooleanType isLinearIn( int dim ,
00168 VariableType *varType ,
00169 int *component,
00170 BooleanType *implicit_dep );
00171
00172
00173
00180 virtual BooleanType isPolynomialIn( int dim ,
00181 VariableType *varType ,
00182 int *component,
00183 BooleanType *implicit_dep );
00184
00185
00186
00193 virtual BooleanType isRationalIn( int dim ,
00194 VariableType *varType ,
00195 int *component,
00196 BooleanType *implicit_dep );
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 protected:
00340
00341 };
00342
00343
00344 CLOSE_NAMESPACE_ACADO
00345
00346
00347
00348 #endif
00349