00001 # ifndef CPPAD_DECLARE_INCLUDED
00002 # define CPPAD_DECLARE_INCLUDED
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 namespace CppAD {
00016
00017 template <class Base> class AD;
00018 template <class Base> class ADFun;
00019 template <class Base> class ADTape;
00020 template <class Base> class VecAD;
00021 template <class Base> class TapeRec;
00022 template <class Base> class VecAD_reference;
00023 template <class Base> class ADDiscrete;
00024
00025
00026 template <class Base> bool Parameter (const VecAD<Base> &u);
00027 template <class Base> bool Variable (const VecAD<Base> &u);
00028
00029
00030 template <class Base> int Integer (const AD<Base> &u);
00031 template <class Base> bool Parameter (const AD<Base> &u);
00032 template <class Base> bool Variable (const AD<Base> &u);
00033 template <class Base> bool IdenticalZero (const AD<Base> &u);
00034 template <class Base> bool IdenticalOne (const AD<Base> &u);
00035 template <class Base> bool IdenticalPar (const AD<Base> &u);
00036 template <class Base> bool LessThanZero (const AD<Base> &u);
00037 template <class Base> bool LessThanOrZero (const AD<Base> &u);
00038 template <class Base> bool GreaterThanZero (const AD<Base> &u);
00039 template <class Base> bool GreaterThanOrZero (const AD<Base> &u);
00040 template <class Base> AD<Base> Var2Par (const AD<Base> &u);
00041
00042
00043 template <class Base> bool NearEqual(
00044 const AD<Base> &x, const AD<Base> &y, const Base &r, const Base &a);
00045
00046 template <class Base> bool NearEqual(
00047 const Base &x, const AD<Base> &y, const Base &r, const Base &a);
00048
00049 template <class Base> bool NearEqual(
00050 const AD<Base> &x, const Base &y, const Base &r, const Base &a);
00051
00052
00053 enum CompareOp
00054 {CompareLt, CompareLe, CompareEq, CompareGe, CompareGt, CompareNe};
00055
00056 template <class Base> AD<Base> CondExpOp (
00057 enum CompareOp cop ,
00058 const AD<Base> &left ,
00059 const AD<Base> &right ,
00060 const AD<Base> &trueCase ,
00061 const AD<Base> &falseCase
00062 );
00063
00064
00065 template <class Base>
00066 bool IdenticalEqualPar (const AD<Base> &u, const AD<Base> &v);
00067
00068
00069 template <class Base>
00070 bool EqualOpSeq (const AD<Base> &u, const AD<Base> &v);
00071
00072
00073 template <class Base>
00074 void PrintFor(const char *text, const AD<Base> &x);
00075
00076
00077 template <class Base> Base Value(const AD<Base> &x);
00078
00079
00080 template <class Base> AD<Base> pow
00081 (const AD<Base> &x, const AD<Base> &y);
00082
00083
00084 template <class Base> std::ostream&
00085 operator << (std::ostream &os, const AD<Base> &x);
00086 template <class Base> std::ostream&
00087 operator << (std::ostream &os, const VecAD_reference<Base> &e);
00088 template <class Base> std::ostream&
00089 operator << (std::ostream &os, const VecAD<Base> &vec);
00090 }
00091
00092 # endif