34 template<
class E1,
class E2>
36 ADExpr< @STYPE@< ADExpr<E1>, ADExpr<E2> > >
37 @OP@ (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
39 typedef @STYPE@<ADExpr<E1>, ADExpr<E2> > expr_t;
40 return ADExpr<expr_t> ( expr_t ( v , w ) );
42 template<
class E,
int Nvar,
int order,
int Var>
44 ADExpr<@STYPE@<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
45 @OP@ (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
47 typedef typename E::value_type A;
48 typedef @STYPE@<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
49 return ADExpr<expr_t>( expr_t ( e, v ) );
52 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
54 ADExpr<@STYPE@<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
55 @OP@ (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
57 typedef @STYPE@<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
58 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
61 template<
class E,
int Nvar,
int order,
int Var>
63 ADExpr<@STYPE@<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
64 @OP@ (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
66 typedef typename E::value_type A;
67 typedef @STYPE@<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
68 return ADExpr<expr_t> ( expr_t ( v , e ) );
71 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
73 ADExpr<@STYPE@<ADCst<C>,ADType<A, Nvar, order, Var> > >
74 @OP@ ( C a,
const ADType<A, Nvar, order, Var> &e )
76 typedef @STYPE@<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
77 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
80 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
82 ADExpr<@STYPE@<ADType<A, Nvar, order, Var>,ADCst<C> > >
83 @OP@ (
const ADType<A, Nvar, order, Var> &e, C a )
85 typedef @STYPE@<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
86 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
89 template<
class E,
class C>
91 ADExpr<@STYPE@<ADCst<C>,ADExpr<E> > >
92 @OP@ ( C t,
const ADExpr<E> &e )
94 typedef @STYPE@<ADCst<C>,ADExpr<E> > expr_t;
95 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
98 template<
class E,
class C>
100 ADExpr<@STYPE@<ADExpr<E>,ADCst<C> > >
101 @OP@ (
const ADExpr<E> &e, C t )
103 typedef @STYPE@<ADExpr<E>,ADCst<C> > expr_t;
104 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );