ltl::ExprBinopNode< A, B, Op, N > Class Template Reference
[MArray Expression Template Internals]

Binary operation node in the expression parse tree. More...

Inherits ltl::LTLIterator.

List of all members.

Public Types

Public Member Functions


Detailed Description

template<typename A, typename B, typename Op, int N>
class ltl::ExprBinopNode< A, B, Op, N >

Binary operation node in the expression parse tree.

This class represents a binary operation in the parse tree of an expression. It captures the LHS and the RHS of the operation (both of type ExprNode<>) and the operation itself, which which is a functor that encapsulates the operation for the element type of the arrays/expressions involved.

Like all parse tree elements, this class implements the iterator interface. It forwards all iterator movements to the LHS and the RHS, and when dereferenced, evaluates the operation passing the LHS and RHS as parameters.

See the documentation of ExprNode for an anatomy of the iterator interface.


Member Typedef Documentation

template<typename A, typename B, typename Op, int N>
typedef Op::value_type ltl::ExprBinopNode< A, B, Op, N >::value_type

the result data type is the value_type of the operation


Member Enumeration Documentation

template<typename A, typename B, typename Op, int N>
anonymous enum

The number of dimensions.

Enumerator:
dims 
template<typename A, typename B, typename Op, int N>
anonymous enum

The number of ltl::IndexIter index iterators in the LHS and the RHS.

Enumerator:
numIndexIter 
template<typename A, typename B, typename Op, int N>
anonymous enum

The number of convolution operations.

Enumerator:
numConvolution 
template<typename A, typename B, typename Op, int N>
anonymous enum

Vectorizable if the LHS and RHS are vectorizable and if the the operation is vectorizable.

Enumerator:
isVectorizable 

Constructor & Destructor Documentation

template<typename A, typename B, typename Op, int N>
ltl::ExprBinopNode< A, B, Op, N >::ExprBinopNode ( const A &  a,
const B &  b 
) [inline]

Constructor.


Member Function Documentation

template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::operator++ (  )  [inline]

Implement the iterator interface forwarding all operations to both operands.

template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advance (  )  [inline]
template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advance ( const int  i  )  [inline]
template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advance ( const int  i,
const int  dim 
) [inline]
template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceWithStride1 (  )  [inline]
template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceDim (  )  [inline]
template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceDim ( const int  cutDim  )  [inline]
template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::operator* (  )  const [inline]

Evaluate by passing the values of the LHS and RHS to the operation.

template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readWithoutStride ( const int  i  )  const [inline]
template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readWithStride ( const int  i  )  const [inline]
template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readWithStride ( const int  i,
const int  dim 
) const [inline]
template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readAtOffsetDim ( const int  i,
const int  dim 
) const [inline]

compute and return the value of the subexpression in the parse tree below us at an offset in dimension 1, 2, and/or 3. Used for evaluating convolutions

template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readAtOffset ( const int  i  )  const [inline]
template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readAtOffset ( const int  i,
const int  j 
) const [inline]
template<typename A, typename B, typename Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readAtOffset ( const int  i,
const int  j,
const int  k 
) const [inline]
template<typename A, typename B, typename Op, int N>
int ltl::ExprBinopNode< A, B, Op, N >::boundary_l ( const int  dim  )  const [inline]

Return the width of the lower/upper boundary in dimension dim to be left unevaluated. Zero in most cases except for convolutions, which do require padding of the half-width of the kernel.

References ltl::min().

template<typename A, typename B, typename Op, int N>
int ltl::ExprBinopNode< A, B, Op, N >::boundary_u ( const int  dim  )  const [inline]

References ltl::max().

template<typename A, typename B, typename Op, int N>
bool ltl::ExprBinopNode< A, B, Op, N >::isStorageContiguous ( void   )  const [inline]
template<typename A, typename B, typename Op, int N>
bool ltl::ExprBinopNode< A, B, Op, N >::isStride1 (  )  const [inline]
template<typename A, typename B, typename Op, int N>
bool ltl::ExprBinopNode< A, B, Op, N >::isConformable ( const Shape< N > &  other  )  const [inline]
template<typename A, typename B, typename Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::reset (  )  [inline]
template<typename A, typename B, typename Op, int N>
const Shape<N>* ltl::ExprBinopNode< A, B, Op, N >::shape (  )  const [inline]

Return a shape object from the parse tree.

References ltl::_expr_getshape().


Generated on 19 Feb 2015 for LTL by  doxygen 1.6.1