LIBINT 2.7.2
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
libint2::GenericRecurrenceRelation< RRImpl, F, Target > Class Template Reference

RRImpl must inherit GenericRecurrenceRelation<RRImpl> More...

#include <generic_rr.h>

Inheritance diagram for libint2::GenericRecurrenceRelation< RRImpl, F, Target >:
Inheritance graph
[legend]
Collaboration diagram for libint2::GenericRecurrenceRelation< RRImpl, F, Target >:
Collaboration graph
[legend]

Public Types

typedef F BasisFunctionType
 
typedef Target TargetType
 
typedef RecurrenceRelation ParentType
 
typedef ParentType::ExprType ExprType
 
- Public Types inherited from libint2::RecurrenceRelation
typedef RecurrenceRelation this_type
 
typedef AlgebraicOperator< DGVertexExprType
 Numerical expression of a recurrence relation is always expressed as an AlgebraicOperator<DGVertex>
 

Public Member Functions

unsigned int num_children () const override
 Implementation of RecurrenceRelation::num_children() More...
 
SafePtr< DGVertexrr_target () const override
 Implementation of RecurrenceRelation::rr_target() More...
 
SafePtr< DGVertexrr_child (unsigned int i) const override
 Implementation of RecurrenceRelation::rr_child() More...
 
bool is_simple () const override
 Implementation of RecurrenceRelation::is_simple() More...
 
std::string generate_label () const override
 Implementation of RecurrenceRelation::generate_label() More...
 
- Public Member Functions inherited from libint2::RecurrenceRelation
virtual unsigned int num_children () const =0
 num_children() returns the actual number of children. More...
 
virtual SafePtr< DGVertexrr_child (unsigned int i) const =0
 Returns i-th child. More...
 
virtual SafePtr< DGVertexrr_target () const =0
 Returns the target. More...
 
const SafePtr< ExprType > & rr_expr () const
 Returns the expression.
 
virtual bool is_simple () const =0
 Returns true is this recurrence relation is simple enough to optimize away. More...
 
virtual bool invariant_type () const
 Returns true is the type of target and all children are exactly the same. More...
 
virtual int partindex_direction () const
 
virtual BraketDirection braket_direction () const
 
size_t size_of_children () const
 
const std::string & label () const
 label() returns a unique, short, descriptive label of this RR (e.g. More...
 
virtual std::string description () const
 description() returns a verbose description of this RR
 
virtual void generate_code (const SafePtr< CodeContext > &context, const SafePtr< ImplicitDimensions > &dims, const std::string &funcname, std::ostream &decl, std::ostream &def)
 Generate declaration and definition for the recurrence relation.
 
virtual void generate_generic_code (const SafePtr< CodeContext > &context, const SafePtr< ImplicitDimensions > &dims, const std::string &funcname, std::ostream &decl, std::ostream &def)
 Generate declaration and definition for the recurrence relation using generic code (typically, a manually written code)
 
virtual std::string spfunction_call (const SafePtr< CodeContext > &context, const SafePtr< ImplicitDimensions > &dims) const
 Generate a callback for this recurrence relation. More...
 
unsigned int nflops () const
 Return the number of FLOPs per this recurrence relation.
 
void inst_id (const SingletonStack< RecurrenceRelation, std::string >::InstanceID &i)
 RecurrenceRelation is managed by SingletonStack but doesn't need to keep track of instance ID.
 

Static Public Member Functions

static SafePtr< RRImpl > Instance (const SafePtr< TargetType > &Tint, unsigned int dir)
 Return an instance if applicable, or a null pointer otherwise.
 

Protected Member Functions

 GenericRecurrenceRelation (const SafePtr< TargetType > &Tint, unsigned int dir)
 
unsigned int dir () const
 
const SafePtr< DGVertex > & add_child (const SafePtr< DGVertex > &child)
 add child
 
template<class RealChildType >
const SafePtr< DGVertex > & make_child (const typename RealChildType::BasisFunctionType &A, const typename RealChildType::BasisFunctionType &B, const typename RealChildType::BasisFunctionType &C, const typename RealChildType::BasisFunctionType &D, const typename RealChildType::AuxIndexType &aux=typename RealChildType::AuxIndexType(), const typename RealChildType::OperType &oper=typename RealChildType::OperType())
 make_child should really looks something like this, but gcc 4.3.0 craps out TODO test is this works
 
- Protected Member Functions inherited from libint2::RecurrenceRelation
void add_expr (const SafePtr< ExprType > &a, int minus=1)
 Adds a (or -a, if minus = -1) to expr_.
 
virtual std::string generate_label () const =0
 Generates the label. More...
 
template<class RR >
bool register_with_rrstack ()
 Registers with the stack.
 

Static Protected Member Functions

static bool default_directional ()
 is this recurrence relation parameterized by a direction (x, y, or z). More...
 

Protected Attributes

SafePtr< TargetType > target_
 
- Protected Attributes inherited from libint2::RecurrenceRelation
unsigned int nflops_
 
std::string label_
 
SafePtr< ExprTypeexpr_
 

Friends

template<class RR , class C >
class ChildFactory
 use this helper to make children
 

Detailed Description

template<typename RRImpl, typename F, typename Target>
class libint2::GenericRecurrenceRelation< RRImpl, F, Target >

RRImpl must inherit GenericRecurrenceRelation<RRImpl>

Member Function Documentation

◆ default_directional()

template<typename RRImpl , typename F , typename Target >
static bool libint2::GenericRecurrenceRelation< RRImpl, F, Target >::default_directional ( )
inlinestaticprotected

◆ generate_label()

template<typename RRImpl , typename F , typename Target >
std::string libint2::GenericRecurrenceRelation< RRImpl, F, Target >::generate_label ( ) const
inlineoverridevirtual

◆ is_simple()

template<typename RRImpl , typename F , typename Target >
bool libint2::GenericRecurrenceRelation< RRImpl, F, Target >::is_simple ( ) const
inlineoverridevirtual

◆ num_children()

template<typename RRImpl , typename F , typename Target >
unsigned int libint2::GenericRecurrenceRelation< RRImpl, F, Target >::num_children ( ) const
inlineoverridevirtual

◆ rr_child()

template<typename RRImpl , typename F , typename Target >
SafePtr< DGVertex > libint2::GenericRecurrenceRelation< RRImpl, F, Target >::rr_child ( unsigned int  i) const
inlineoverridevirtual

◆ rr_target()

template<typename RRImpl , typename F , typename Target >
SafePtr< DGVertex > libint2::GenericRecurrenceRelation< RRImpl, F, Target >::rr_target ( ) const
inlineoverridevirtual

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