42#define RNG_OPERATOR_WITH_SCALAR(GEN,SCA,OP,APP) \
44inline PETEBinaryReturn<GEN,SCA,APP>::type \
45OP(const GEN& lhs, SCA sca) \
47 return PETE_apply( APP(), lhs(), sca ); \
50inline PETEBinaryReturn<SCA,GEN,APP>::type \
51OP(SCA sca, const GEN& rhs) \
53 return PETE_apply( APP(), sca, rhs() ); \
56#define RNG_OPERATOR(GEN,OP,APP) \
58RNG_OPERATOR_WITH_SCALAR(GEN,short,OP,APP) \
59RNG_OPERATOR_WITH_SCALAR(GEN,int,OP,APP) \
60RNG_OPERATOR_WITH_SCALAR(GEN,long,OP,APP) \
61RNG_OPERATOR_WITH_SCALAR(GEN,float,OP,APP) \
62RNG_OPERATOR_WITH_SCALAR(GEN,double,OP,APP) \
63RNG_OPERATOR_WITH_SCALAR(GEN,std::complex<double>,OP,APP)
65#define RNG_BASIC_MATH(GEN) \
67RNG_OPERATOR(GEN,operator+,OpAdd) \
68RNG_OPERATOR(GEN,operator-,OpSubtract) \
69RNG_OPERATOR(GEN,operator*,OpMultipply) \
70RNG_OPERATOR(GEN,operator/,OpDivide)
SequenceGen< GT > PETE_Expr_t
GT::Return_t PETE_Return_t
SequenceGen(const GT &gen)
const PETE_Expr_t & MakeExpression() const
Return_t operator()(void) const
PETE_Expr_t & MakeExpression()
const GT & getGenerator() const