CppADCodeGen  2.4.3
A C++ Algorithmic Differentiation Package with Source Code Generation
CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > Class Template Reference
Inheritance diagram for CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >:
Inheritance graph
Collaboration diagram for CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >:
Collaboration graph

Public Types

using ScalarOut = CG< BaseOut >
 
using ActiveOut = CppAD::AD< ScalarOut >
 
using Super = EvaluatorAD< ScalarIn, ScalarOut, Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >
 
using NodeIn = OperationNode< ScalarIn >
 
using ArgIn = Argument< ScalarIn >
 
using Base = EvaluatorBase< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > >, Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >
 

Public Member Functions

 Evaluator (CodeHandler< ScalarIn > &handler)
 
void setPrintFor (bool printFor)
 
bool isPrintFor () const
 
void setPrintForPos (const ActiveOut &pos)
 
const ActiveOutgetPrintForPos () const
 
void setCopyAdCgName (bool adcgName)
 
bool isCopyAdCgName () const
 
void setPrintOutPrintOperations (bool print)
 
bool isPrintOutPrintOperations () const
 
virtual bool addAtomicFunction (size_t id, atomic_base< CG< BaseOut > > &atomic)
 
virtual void addAtomicFunctions (const std::map< size_t, atomic_base< CG< BaseOut > > * > &atomics)
 
size_t getNumberOfEvaluatedAtomics () const
 

Protected Member Functions

void processActiveOut (const OperationNode< ScalarIn > &node, ActiveOut &a)
 
void prepareNewEvaluation ()
 
void evalAtomicOperation (NodeIn &node)
 
void evalAtomicOperation (const NodeIn &node)
 
ActiveOut evalPrint (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalOperation (OperationNode< ScalarIn > &node)
 
CppAD::AD< CG< BaseOut > > evalAssign (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalAbs (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalAcos (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalAdd (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalAlias (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalArrayElement (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalAsin (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalAtan (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCompareLt (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCompareLe (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCompareEq (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCompareGe (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCompareGt (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCompareNe (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCosh (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalCos (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalDiv (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalExp (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalIndependent (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalLog (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalMul (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalPow (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalSign (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalSinh (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalSin (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalSqrt (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalSub (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalTanh (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalTan (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalMinus (const NodeIn &node)
 
CppAD::AD< CG< BaseOut > > evalUnsupportedOperation (const NodeIn &node)
 
void processActiveOut (const NodeIn &node, CppAD::AD< CG< BaseOut > > &a)
 
CppAD::AD< CG< BaseOut > > evalArg (const std::vector< Argument< ScalarIn > > &args, size_t pos)
 
CppAD::AD< CG< BaseOut > > evalArg (const Argument< ScalarIn > &arg, size_t pos)
 

Protected Attributes

bool printFor_
 
ActiveOut printForPos_
 
bool adcgName_
 
std::set< NodeIn * > evalsAtomic_
 
std::map< size_t, CppAD::atomic_base< ScalarOut > * > atomicFunctions_
 
bool printOutPriOperations_
 

Detailed Description

template<class ScalarIn, class BaseOut>
class CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >

Specialization of class Evaluator for an output active type of AD<CG<Base>>

Definition at line 25 of file evaluator_adcg.hpp.

Member Function Documentation

◆ addAtomicFunction()

virtual bool CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::addAtomicFunction ( size_t  id,
atomic_base< CG< BaseOut > > &  atomic 
)
inlinevirtualinherited

Provides an atomic function.

Parameters
idThe atomic function ID
atomicThe atomic function
Returns
True if an atomic function with the same ID was already defined, false otherwise.

Definition at line 83 of file evaluator_ad.hpp.

◆ evalAtomicOperation()

void CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::evalAtomicOperation ( NodeIn node)
inlineprotectedinherited
Exceptions
CGExceptionon an internal evaluation error
Note
overrides the default evalAtomicOperation() even though this method is not virtual (hides a method in EvaluatorOperations)

Definition at line 131 of file evaluator_ad.hpp.

◆ evalOperation()

CppAD::AD< CG< BaseOut > > CppAD::cg::EvaluatorOperations< ScalarIn, CG< BaseOut > , CppAD::AD< CG< BaseOut > > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::evalOperation ( OperationNode< ScalarIn > &  node)
inlineprotectedinherited

Clones a node with the new type. Override this method to add a custom node generation behaviour which does not follow the original operation graph.

Parameters
nodethe original node
Returns
the clone of the original node

Definition at line 374 of file evaluator.hpp.

◆ evalPrint()

ActiveOut CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::evalPrint ( const NodeIn node)
inlineprotectedinherited
Note
overrides the default evalPrint() even though this method is not virtual (hides a method in EvaluatorOperations)

Definition at line 181 of file evaluator_ad.hpp.

◆ getNumberOfEvaluatedAtomics()

size_t CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::getNumberOfEvaluatedAtomics
inlineinherited

Provides the number of atomic function evaluations. The same function can be considered more than once.

Returns
the number of atomic functions evaluations.

Definition at line 104 of file evaluator_ad.hpp.

◆ getPrintForPos()

template<class ScalarIn , class BaseOut >
const ActiveOut& CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::getPrintForPos ( ) const
inline

Whenever printFor_ is set to true it will add a CppAD::PrintFor(pos, "", var, name) to every variable with a name so that names can be recovered using a OperationNodeNameStreambuf. This method provides the pos value used in CppAD::PrintFor.

Definition at line 105 of file evaluator_adcg.hpp.

◆ isCopyAdCgName()

template<class ScalarIn , class BaseOut >
bool CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::isCopyAdCgName ( ) const
inline

Whenever set to true it will copy the name in original operation nodes into new operation nodes created in AD<CG>. The default value is true.

Definition at line 122 of file evaluator_adcg.hpp.

◆ isPrintFor()

template<class ScalarIn , class BaseOut >
bool CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::isPrintFor ( ) const
inline

true if a CppAD::PrintFor(pos, "", var, name) will be added to every variable with a name so that names can be recovered using a OperationNodeNameStreambuf. The default value is false.

Definition at line 83 of file evaluator_adcg.hpp.

◆ isPrintOutPrintOperations()

bool CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::isPrintOutPrintOperations
inlineinherited

Whether or not the nodes with an operation type 'Pri' are printed out during the evaluation.

Definition at line 71 of file evaluator_ad.hpp.

◆ prepareNewEvaluation()

void CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::prepareNewEvaluation
inlineprotectedinherited
Note
overrides the default prepareNewEvaluation() even though this method is not virtual (hides a method in EvaluatorBase)

Do not place this in clear() so that it is possible to determine the number of atomic function evaluations after the evaluation has ended.

Definition at line 114 of file evaluator_ad.hpp.

◆ processActiveOut()

template<class ScalarIn , class BaseOut >
void CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::processActiveOut ( const OperationNode< ScalarIn > &  node,
ActiveOut a 
)
inlineprotected
Note
overrides the default processActiveOut() even though this method is not virtual (hides a method in EvaluatorOperations)

Definition at line 132 of file evaluator_adcg.hpp.

◆ setCopyAdCgName()

template<class ScalarIn , class BaseOut >
void CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::setCopyAdCgName ( bool  adcgName)
inline

Whenever set to true it will copy the name in original operation nodes into new operation nodes created in AD<CG>.

Definition at line 113 of file evaluator_adcg.hpp.

◆ setPrintFor()

template<class ScalarIn , class BaseOut >
void CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::setPrintFor ( bool  printFor)
inline

Whenever set to true it will add a CppAD::PrintFor(pos, "", var, name) to every variable with a name so that names can be recovered using a OperationNodeNameStreambuf.

Definition at line 73 of file evaluator_adcg.hpp.

◆ setPrintForPos()

template<class ScalarIn , class BaseOut >
void CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::setPrintForPos ( const ActiveOut pos)
inline

Whenever printFor_ is set to true it will add a CppAD::PrintFor(pos, "", var, name) to every variable with a name so that names can be recovered using a OperationNodeNameStreambuf. This method sets the pos value used in CppAD::PrintFor.

Definition at line 94 of file evaluator_adcg.hpp.

◆ setPrintOutPrintOperations()

void CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::setPrintOutPrintOperations ( bool  print)
inlineinherited

Defines whether or not to print out the nodes with an operation type 'Pri' during the evaluation.

Definition at line 63 of file evaluator_ad.hpp.

Member Data Documentation

◆ adcgName_

template<class ScalarIn , class BaseOut >
bool CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::adcgName_
protected

Whenever set to true it will copy the name in original operation nodes into new operation nodes created in AD<CG>.

Definition at line 55 of file evaluator_adcg.hpp.

◆ printFor_

template<class ScalarIn , class BaseOut >
bool CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::printFor_
protected

Whenever set to true it will add a CppAD::PrintFor(0, "", var, name) to every variable with a name so that names can be recovered using a OperationNodeNameStreambuf.

Definition at line 46 of file evaluator_adcg.hpp.

◆ printForPos_

template<class ScalarIn , class BaseOut >
ActiveOut CppAD::cg::Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > >::printForPos_
protected

Pos value used in CppAD::PrintFor(pos, ...)

Definition at line 50 of file evaluator_adcg.hpp.

◆ printOutPriOperations_

bool CppAD::cg::EvaluatorAD< ScalarIn, CG< BaseOut > , Evaluator< ScalarIn, CG< BaseOut >, CppAD::AD< CG< BaseOut > > > >::printOutPriOperations_
protectedinherited

Whether or not the nodes with an operation type 'Pri' are printed out during the evaluation.

Definition at line 49 of file evaluator_ad.hpp.


The documentation for this class was generated from the following file: