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