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_DOUBLE_CONSTANT_HPP
00036 #define ACADO_TOOLKIT_DOUBLE_CONSTANT_HPP
00037
00038
00039 #include <acado/symbolic_operator/symbolic_operator_fwd.hpp>
00040
00041
00042 BEGIN_NAMESPACE_ACADO
00043
00044
00055 class DoubleConstant : public SmoothOperator{
00056
00057 public:
00058
00059
00061 DoubleConstant( );
00062
00064 DoubleConstant( double value_, NeutralElement neutralElement_ = NE_ZERO );
00065
00067 DoubleConstant( const DoubleConstant &arg );
00068
00070 ~DoubleConstant();
00071
00073 DoubleConstant& operator=( const DoubleConstant &arg );
00074
00075
00076
00083 virtual returnValue evaluate( int number ,
00084 double *x ,
00085 double *result );
00086
00087
00089 virtual returnValue evaluate( EvaluationBase *x );
00090
00091
00097 virtual Operator* differentiate( int index );
00098
00099
00100
00106 virtual Operator* AD_forward( int dim ,
00107 VariableType *varType ,
00108 int *component,
00109 Operator **seed ,
00110 int &nNewIS ,
00111 TreeProjection ***newIS );
00112
00113
00114
00120 virtual returnValue AD_backward( int dim ,
00121 VariableType *varType ,
00122 int *component,
00123 Operator *seed ,
00124 Operator **df ,
00125 int &nNewIS ,
00126 TreeProjection ***newIS );
00127
00128
00129
00135 virtual returnValue AD_symmetric( int dim ,
00136 VariableType *varType ,
00137 int *component ,
00138 Operator *l ,
00139 Operator **S ,
00140 int dimS ,
00141 Operator **dfS ,
00142 Operator **ldf ,
00143 Operator **H ,
00144 int &nNewLIS ,
00145 TreeProjection ***newLIS ,
00146 int &nNewSIS ,
00147 TreeProjection ***newSIS ,
00148 int &nNewHIS ,
00149 TreeProjection ***newHIS );
00150
00151
00156 virtual Operator* substitute( int index ,
00157 const Operator *sub );
00158
00159
00160
00167 virtual NeutralElement isOneOrZero() const;
00168
00169
00170
00176 virtual BooleanType isDependingOn( VariableType var ) const;
00177
00178
00179
00185 virtual BooleanType isDependingOn( int dim ,
00186 VariableType *varType ,
00187 int *component,
00188 BooleanType *implicit_dep );
00189
00190
00191
00192
00200 virtual BooleanType isLinearIn( int dim ,
00201 VariableType *varType ,
00202 int *component,
00203 BooleanType *implicit_dep );
00204
00205
00206
00213 virtual BooleanType isPolynomialIn( int dim ,
00214 VariableType *varType ,
00215 int *component,
00216 BooleanType *implicit_dep );
00217
00218
00219
00226 virtual BooleanType isRationalIn( int dim ,
00227 VariableType *varType ,
00228 int *component,
00229 BooleanType *implicit_dep );
00230
00231
00232
00239 virtual MonotonicityType getMonotonicity( );
00240
00241
00242
00250 virtual CurvatureType getCurvature( );
00251
00252
00253
00259 virtual returnValue setMonotonicity( MonotonicityType monotonicity_ );
00260
00261
00262
00263
00269 virtual returnValue setCurvature( CurvatureType curvature_ );
00270
00271
00272
00279 virtual returnValue AD_forward( int number ,
00280 double *seed ,
00281 double *df );
00283
00284
00285
00293 virtual returnValue AD_forward( int number ,
00294 double *x ,
00296 double *seed ,
00297 double *f ,
00299 double *df );
00301
00302
00303
00304
00305
00311 virtual returnValue AD_backward( int number ,
00313 double seed ,
00314 double *df );
00316
00317
00318
00326 virtual returnValue AD_forward2( int number ,
00328 double *seed1 ,
00329 double *seed2 ,
00331 double *df ,
00333 double *ddf );
00335
00336
00337
00338
00339
00340
00346 virtual returnValue AD_backward2( int number ,
00348 double seed1 ,
00349 double seed2 ,
00350 double *df ,
00352 double *ddf );
00354
00355
00359 virtual std::ostream& print( std::ostream &stream ) const;
00360
00361
00365 virtual Operator* clone() const;
00366
00367
00368
00373 virtual returnValue clearBuffer();
00374
00375
00376
00381 virtual returnValue enumerateVariables( SymbolicIndexList *indexList );
00382
00383
00384
00388 virtual OperatorName getName();
00389
00390
00391
00395 virtual BooleanType isVariable( VariableType &varType,
00396 int &component ) const;
00397
00398
00399
00418 virtual returnValue loadIndices( SymbolicIndexList *indexList );
00421
00422
00423
00425 virtual double getValue() const;
00426
00427
00428
00434 virtual BooleanType isSymbolic() const;
00435
00436
00437
00438
00439
00440
00441
00442 protected:
00443
00444
00445
00446
00447
00448
00449 protected:
00450
00451 double value ;
00453 NeutralElement neutralElement ;
00458 };
00459
00460
00461 CLOSE_NAMESPACE_ACADO
00462
00463
00464
00465 #endif