Binary operation node in the expression parse tree.
More...
Inherits ltl::LTLIterator.
List of all members.
Public Types
- typedef Op::value_type value_type
- the result data type is the
value_type
of the operation
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>
the result data type is the value_type
of the operation
Member Enumeration Documentation
template<typename A, typename B, typename Op, int N>
The number of dimensions.
- Enumerator:
-
template<typename A, typename B, typename Op, int N>
The number of ltl::IndexIter index iterators in the LHS and the RHS.
- Enumerator:
-
template<typename A, typename B, typename Op, int N>
The number of convolution operations.
- Enumerator:
-
template<typename A, typename B, typename Op, int N>
Vectorizable if the LHS and RHS are vectorizable and if the the operation is vectorizable.
- Enumerator:
-
Constructor & Destructor Documentation
template<typename A, typename B, typename Op, int N>
Member Function Documentation
template<typename A, typename B, typename Op, int N>
Implement the iterator interface forwarding all operations to both operands.
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
Evaluate by passing the values of the LHS and RHS to the operation.
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
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>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
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>
template<typename A, typename B, typename Op, int N>
template<typename A, typename B, typename Op, int N>
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>
template<typename A, typename B, typename Op, int N>