1 #ifndef CPPAD_CG_DECLARE_CG_INCLUDED
2 #define CPPAD_CG_DECLARE_CG_INCLUDED
27 template<
class Base,
class RecBase>
36 class BaseAbstractAtomicFun;
39 class CGAbstractAtomicFun;
54 class CodeHandlerVectorSync;
56 template<
class Base,
class T>
57 class CodeHandlerVector;
63 struct OperationPathNode;
72 class ScopePathElement;
81 class IndexOperationNode;
84 class IndexAssignOperationNode;
87 class LoopStartOperationNode;
90 class LoopEndOperationNode;
96 class EquationPattern;
99 class DependentPatternMatcher;
165 #if CPPAD_CG_SYSTEM_LINUX
167 class LinuxDynamicLibModel;
170 class LinuxDynamicLib;
182 template<
class ScalarIn,
class ScalarOut,
class ActiveOut>
195 template<
class Key,
class Value>
202 inline void print(
const Base& v);
204 template<
class Key,
class Value>
205 inline void print(
const std::map<Key, Value>& m);
208 inline void print(
const std::set<Base>& s);
211 inline void print(
const std::set<Base*>& s);
214 inline void print(
const std::vector<Base>& v);
253 bool operator!=(
const CG<Base>& left,
double right);
256 bool operator==(
const CG<Base>& left,
const Base& right);
259 bool operator==(
const Base& left,
const CG<Base>& right);
262 bool operator!=(
const CG<Base>& left, Base right);
265 bool operator!=(
const Base& left,
const CG<Base>& right);
272 inline std::ostream& operator<<(std::ostream& os,
const Enode<Base>& i);
275 inline std::ostream& operator<<(std::ostream& os,
const Vnode<Base>& j);
284 enum class Verbosity {
291 enum class JacobianADMode {
292 Forward, Reverse, Automatic
298 enum class IndexPatternType {
316 bool GreaterThanOrZero(
const cg::CG<Base>& x);
319 bool LessThanZero(
const cg::CG<Base>& x);
322 bool LessThanOrZero(
const cg::CG<Base>& x);
325 bool abs_geq(
const cg::CG<Base>& x,
const cg::CG<Base>& y);
347 bool IdenticalEqualPar(
const cg::CG<Base>& x,
const cg::CG<Base>& y);
351 bool EqualOpSeq(
const cg::CG<Base>& u,
const cg::CG<Base>& v);
355 bool NearEqual(
const cg::CG<Base>& x,
const cg::CG<Base>& y,
const Base& r,
const Base& a);
358 bool NearEqual(
const Base& x,
const cg::CG<Base>& y,
const Base& r,
const Base& a);
361 bool NearEqual(
const cg::CG<Base>& x,
const Base& y,
const Base& r,
const Base& a);
363 template <
class Base>
364 inline bool isnan(
const cg::CG<Base>& s);
366 template <
class Base>
367 int Integer(
const cg::CG<Base>& x);
370 cg::CG<Base>
CondExp(cg::CGOpCode op,
371 const cg::CG<Base>& left,
const cg::CG<Base>& right,
372 const cg::CG<Base>& trueCase,
const cg::CG<Base>& falseCase,
373 bool (*compare)(
const Base&,
const Base&));
379 inline cg::CG<Base>
sign(
const cg::CG<Base>& x);
383 inline cg::CG<Base>
pow(
const cg::CG<Base>& x,
const cg::CG<Base>& y);
384 template <
class Base>
385 inline cg::CG<Base>
pow(
const Base& x,
const cg::CG<Base>& y);
386 template <
class Base>
387 inline cg::CG<Base>
pow(
const cg::CG<Base>& x,
const Base& y);
391 inline cg::CG<Base> abs(
const cg::CG<Base>& x);
394 inline cg::CG<Base> fabs(
const cg::CG<Base>& x);
398 inline cg::CG<Base> acos(
const cg::CG<Base>& x);
402 inline cg::CG<Base> asin(
const cg::CG<Base>& x);
406 inline cg::CG<Base> atan(
const cg::CG<Base>& x);
410 inline cg::CG<Base> cos(
const cg::CG<Base>& x);
414 inline cg::CG<Base> cosh(
const cg::CG<Base>& x);
418 inline cg::CG<Base> exp(
const cg::CG<Base>& x);
422 inline cg::CG<Base> log(
const cg::CG<Base>& x);
426 inline cg::CG<Base> sin(
const cg::CG<Base>& x);
430 inline cg::CG<Base> sinh(
const cg::CG<Base>& x);
434 inline cg::CG<Base> sqrt(
const cg::CG<Base>& x);
438 inline cg::CG<Base> tan(
const cg::CG<Base>& x);
442 inline cg::CG<Base> tanh(
const cg::CG<Base>& x);
444 #if CPPAD_USE_CPLUSPLUS_2011
450 inline cg::CG<Base> erf(
const cg::CG<Base>& x);
454 inline cg::CG<Base> erfc(
const cg::CG<Base>& var);
458 inline cg::CG<Base> asinh(
const cg::CG<Base>& x);
462 inline cg::CG<Base> acosh(
const cg::CG<Base>& x);
466 inline cg::CG<Base> atanh(
const cg::CG<Base>& x);
470 inline cg::CG<Base> expm1(
const cg::CG<Base>& x);
474 inline cg::CG<Base> log1p(
const cg::CG<Base>& x);
482 #include <cppad/cg/declare_cg_loops.hpp>
cg::CG< Base > sign(const cg::CG< Base > &x)
bool GreaterThanZero(const cg::CG< Base > &x)
bool IdenticalOne(const cg::CG< Base > &x)
bool IdenticalZero(const cg::CG< Base > &x)
bool IdenticalPar(const cg::CG< Base > &x)
cg::CG< Base > CondExp(cg::CGOpCode op, const cg::CG< Base > &left, const cg::CG< Base > &right, const cg::CG< Base > &trueCase, const cg::CG< Base > &falseCase, bool(*compare)(const Base &, const Base &))
cg::CG< Base > pow(const cg::CG< Base > &x, const cg::CG< Base > &y)