64 template<
class E1,
class E2>
66 ADExpr< ADBinaryAdd< ADExpr<E1>, ADExpr<E2> > >
67 operator+ (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
69 typedef ADBinaryAdd<ADExpr<E1>, ADExpr<E2> > expr_t;
70 return ADExpr<expr_t> ( expr_t ( v , w ) );
72 template<
class E,
int Nvar,
int order,
int Var>
74 ADExpr<ADBinaryAdd<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
75 operator+ (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
77 typedef typename E::value_type A;
78 typedef ADBinaryAdd<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
79 return ADExpr<expr_t>( expr_t ( e, v ) );
82 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
84 ADExpr<ADBinaryAdd<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
85 operator+ (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
87 typedef ADBinaryAdd<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
88 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
91 template<
class E,
int Nvar,
int order,
int Var>
93 ADExpr<ADBinaryAdd<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
94 operator+ (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
96 typedef typename E::value_type A;
97 typedef ADBinaryAdd<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
98 return ADExpr<expr_t> ( expr_t ( v , e ) );
101 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
103 ADExpr<ADBinaryAdd<ADCst<C>,ADType<A, Nvar, order, Var> > >
104 operator+ ( C a,
const ADType<A, Nvar, order, Var> &e )
106 typedef ADBinaryAdd<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
107 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
110 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
112 ADExpr<ADBinaryAdd<ADType<A, Nvar, order, Var>,ADCst<C> > >
113 operator+ (
const ADType<A, Nvar, order, Var> &e, C a )
115 typedef ADBinaryAdd<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
116 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
119 template<
class E,
class C>
121 ADExpr<ADBinaryAdd<ADCst<C>,ADExpr<E> > >
122 operator+ ( C t,
const ADExpr<E> &e )
124 typedef ADBinaryAdd<ADCst<C>,ADExpr<E> > expr_t;
125 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
128 template<
class E,
class C>
130 ADExpr<ADBinaryAdd<ADExpr<E>,ADCst<C> > >
131 operator+ (
const ADExpr<E> &e, C t )
133 typedef ADBinaryAdd<ADExpr<E>,ADCst<C> > expr_t;
134 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
173 template<
class E1,
class E2>
175 ADExpr< ADBinarySubtract< ADExpr<E1>, ADExpr<E2> > >
176 operator- (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
178 typedef ADBinarySubtract<ADExpr<E1>, ADExpr<E2> > expr_t;
179 return ADExpr<expr_t> ( expr_t ( v , w ) );
181 template<
class E,
int Nvar,
int order,
int Var>
183 ADExpr<ADBinarySubtract<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
184 operator- (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
186 typedef typename E::value_type A;
187 typedef ADBinarySubtract<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
188 return ADExpr<expr_t>( expr_t ( e, v ) );
191 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
193 ADExpr<ADBinarySubtract<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
194 operator- (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
196 typedef ADBinarySubtract<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
197 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
200 template<
class E,
int Nvar,
int order,
int Var>
202 ADExpr<ADBinarySubtract<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
203 operator- (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
205 typedef typename E::value_type A;
206 typedef ADBinarySubtract<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
207 return ADExpr<expr_t> ( expr_t ( v , e ) );
210 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
212 ADExpr<ADBinarySubtract<ADCst<C>,ADType<A, Nvar, order, Var> > >
213 operator- ( C a,
const ADType<A, Nvar, order, Var> &e )
215 typedef ADBinarySubtract<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
216 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
219 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
221 ADExpr<ADBinarySubtract<ADType<A, Nvar, order, Var>,ADCst<C> > >
222 operator- (
const ADType<A, Nvar, order, Var> &e, C a )
224 typedef ADBinarySubtract<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
225 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
228 template<
class E,
class C>
230 ADExpr<ADBinarySubtract<ADCst<C>,ADExpr<E> > >
231 operator- ( C t,
const ADExpr<E> &e )
233 typedef ADBinarySubtract<ADCst<C>,ADExpr<E> > expr_t;
234 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
237 template<
class E,
class C>
239 ADExpr<ADBinarySubtract<ADExpr<E>,ADCst<C> > >
240 operator- (
const ADExpr<E> &e, C t )
242 typedef ADBinarySubtract<ADExpr<E>,ADCst<C> > expr_t;
243 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
282 template<
class E1,
class E2>
284 ADExpr< ADBinaryMultiply< ADExpr<E1>, ADExpr<E2> > >
285 operator* (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
287 typedef ADBinaryMultiply<ADExpr<E1>, ADExpr<E2> > expr_t;
288 return ADExpr<expr_t> ( expr_t ( v , w ) );
290 template<
class E,
int Nvar,
int order,
int Var>
292 ADExpr<ADBinaryMultiply<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
293 operator* (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
295 typedef typename E::value_type A;
296 typedef ADBinaryMultiply<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
297 return ADExpr<expr_t>( expr_t ( e, v ) );
300 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
302 ADExpr<ADBinaryMultiply<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
303 operator* (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
305 typedef ADBinaryMultiply<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
306 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
309 template<
class E,
int Nvar,
int order,
int Var>
311 ADExpr<ADBinaryMultiply<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
312 operator* (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
314 typedef typename E::value_type A;
315 typedef ADBinaryMultiply<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
316 return ADExpr<expr_t> ( expr_t ( v , e ) );
319 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
321 ADExpr<ADBinaryMultiply<ADCst<C>,ADType<A, Nvar, order, Var> > >
322 operator* ( C a,
const ADType<A, Nvar, order, Var> &e )
324 typedef ADBinaryMultiply<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
325 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
328 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
330 ADExpr<ADBinaryMultiply<ADType<A, Nvar, order, Var>,ADCst<C> > >
331 operator* (
const ADType<A, Nvar, order, Var> &e, C a )
333 typedef ADBinaryMultiply<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
334 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
337 template<
class E,
class C>
339 ADExpr<ADBinaryMultiply<ADCst<C>,ADExpr<E> > >
340 operator* ( C t,
const ADExpr<E> &e )
342 typedef ADBinaryMultiply<ADCst<C>,ADExpr<E> > expr_t;
343 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
346 template<
class E,
class C>
348 ADExpr<ADBinaryMultiply<ADExpr<E>,ADCst<C> > >
349 operator* (
const ADExpr<E> &e, C t )
351 typedef ADBinaryMultiply<ADExpr<E>,ADCst<C> > expr_t;
352 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
391 template<
class E1,
class E2>
393 ADExpr< ADBinaryDivide< ADExpr<E1>, ADExpr<E2> > >
394 operator/ (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
396 typedef ADBinaryDivide<ADExpr<E1>, ADExpr<E2> > expr_t;
397 return ADExpr<expr_t> ( expr_t ( v , w ) );
399 template<
class E,
int Nvar,
int order,
int Var>
401 ADExpr<ADBinaryDivide<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
402 operator/ (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
404 typedef typename E::value_type A;
405 typedef ADBinaryDivide<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
406 return ADExpr<expr_t>( expr_t ( e, v ) );
409 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
411 ADExpr<ADBinaryDivide<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
412 operator/ (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
414 typedef ADBinaryDivide<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
415 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
418 template<
class E,
int Nvar,
int order,
int Var>
420 ADExpr<ADBinaryDivide<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
421 operator/ (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
423 typedef typename E::value_type A;
424 typedef ADBinaryDivide<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
425 return ADExpr<expr_t> ( expr_t ( v , e ) );
428 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
430 ADExpr<ADBinaryDivide<ADCst<C>,ADType<A, Nvar, order, Var> > >
431 operator/ ( C a,
const ADType<A, Nvar, order, Var> &e )
433 typedef ADBinaryDivide<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
434 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
437 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
439 ADExpr<ADBinaryDivide<ADType<A, Nvar, order, Var>,ADCst<C> > >
440 operator/ (
const ADType<A, Nvar, order, Var> &e, C a )
442 typedef ADBinaryDivide<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
443 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
446 template<
class E,
class C>
448 ADExpr<ADBinaryDivide<ADCst<C>,ADExpr<E> > >
449 operator/ ( C t,
const ADExpr<E> &e )
451 typedef ADBinaryDivide<ADCst<C>,ADExpr<E> > expr_t;
452 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
455 template<
class E,
class C>
457 ADExpr<ADBinaryDivide<ADExpr<E>,ADCst<C> > >
458 operator/ (
const ADExpr<E> &e, C t )
460 typedef ADBinaryDivide<ADExpr<E>,ADCst<C> > expr_t;
461 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
500 template<
class E1,
class E2>
502 ADExpr< ADBinaryPow< ADExpr<E1>, ADExpr<E2> > >
503 operator^ (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
505 typedef ADBinaryPow<ADExpr<E1>, ADExpr<E2> > expr_t;
506 return ADExpr<expr_t> ( expr_t ( v , w ) );
508 template<
class E,
int Nvar,
int order,
int Var>
510 ADExpr<ADBinaryPow<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
511 operator^ (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
513 typedef typename E::value_type A;
514 typedef ADBinaryPow<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
515 return ADExpr<expr_t>( expr_t ( e, v ) );
518 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
520 ADExpr<ADBinaryPow<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
521 operator^ (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
523 typedef ADBinaryPow<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
524 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
527 template<
class E,
int Nvar,
int order,
int Var>
529 ADExpr<ADBinaryPow<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
530 operator^ (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
532 typedef typename E::value_type A;
533 typedef ADBinaryPow<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
534 return ADExpr<expr_t> ( expr_t ( v , e ) );
537 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
539 ADExpr<ADBinaryPow<ADCst<C>,ADType<A, Nvar, order, Var> > >
540 operator^ ( C a,
const ADType<A, Nvar, order, Var> &e )
542 typedef ADBinaryPow<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
543 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
546 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
548 ADExpr<ADBinaryPow<ADType<A, Nvar, order, Var>,ADCst<C> > >
549 operator^ (
const ADType<A, Nvar, order, Var> &e, C a )
551 typedef ADBinaryPow<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
552 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
555 template<
class E,
class C>
557 ADExpr<ADBinaryPow<ADCst<C>,ADExpr<E> > >
558 operator^ ( C t,
const ADExpr<E> &e )
560 typedef ADBinaryPow<ADCst<C>,ADExpr<E> > expr_t;
561 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
564 template<
class E,
class C>
566 ADExpr<ADBinaryPow<ADExpr<E>,ADCst<C> > >
567 operator^ (
const ADExpr<E> &e, C t )
569 typedef ADBinaryPow<ADExpr<E>,ADCst<C> > expr_t;
570 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
609 template<
class E1,
class E2>
611 ADExpr< ADBinaryGreater< ADExpr<E1>, ADExpr<E2> > >
612 operator> (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
614 typedef ADBinaryGreater<ADExpr<E1>, ADExpr<E2> > expr_t;
615 return ADExpr<expr_t> ( expr_t ( v , w ) );
617 template<
class E,
int Nvar,
int order,
int Var>
619 ADExpr<ADBinaryGreater<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
620 operator> (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
622 typedef typename E::value_type A;
623 typedef ADBinaryGreater<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
624 return ADExpr<expr_t>( expr_t ( e, v ) );
627 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
629 ADExpr<ADBinaryGreater<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
630 operator> (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
632 typedef ADBinaryGreater<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
633 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
636 template<
class E,
int Nvar,
int order,
int Var>
638 ADExpr<ADBinaryGreater<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
639 operator> (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
641 typedef typename E::value_type A;
642 typedef ADBinaryGreater<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
643 return ADExpr<expr_t> ( expr_t ( v , e ) );
646 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
648 ADExpr<ADBinaryGreater<ADCst<C>,ADType<A, Nvar, order, Var> > >
649 operator> ( C a,
const ADType<A, Nvar, order, Var> &e )
651 typedef ADBinaryGreater<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
652 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
655 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
657 ADExpr<ADBinaryGreater<ADType<A, Nvar, order, Var>,ADCst<C> > >
658 operator> (
const ADType<A, Nvar, order, Var> &e, C a )
660 typedef ADBinaryGreater<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
661 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
664 template<
class E,
class C>
666 ADExpr<ADBinaryGreater<ADCst<C>,ADExpr<E> > >
669 typedef ADBinaryGreater<ADCst<C>,ADExpr<E> > expr_t;
670 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
673 template<
class E,
class C>
675 ADExpr<ADBinaryGreater<ADExpr<E>,ADCst<C> > >
678 typedef ADBinaryGreater<ADExpr<E>,ADCst<C> > expr_t;
679 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
718 template<
class E1,
class E2>
720 ADExpr< ADBinaryLess< ADExpr<E1>, ADExpr<E2> > >
721 operator< ( const ADExpr<E1> &v,
const ADExpr<E2> &w )
723 typedef ADBinaryLess<ADExpr<E1>, ADExpr<E2> > expr_t;
724 return ADExpr<expr_t> ( expr_t ( v , w ) );
726 template<
class E,
int Nvar,
int order,
int Var>
728 ADExpr<ADBinaryLess<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
729 operator< ( const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
731 typedef typename E::value_type A;
732 typedef ADBinaryLess<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
733 return ADExpr<expr_t>( expr_t ( e, v ) );
736 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
738 ADExpr<ADBinaryLess<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
739 operator< ( const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
741 typedef ADBinaryLess<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
742 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
745 template<
class E,
int Nvar,
int order,
int Var>
747 ADExpr<ADBinaryLess<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
748 operator< ( const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
750 typedef typename E::value_type A;
751 typedef ADBinaryLess<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
752 return ADExpr<expr_t> ( expr_t ( v , e ) );
755 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
757 ADExpr<ADBinaryLess<ADCst<C>,ADType<A, Nvar, order, Var> > >
758 operator< ( C a, const ADType<A, Nvar, order, Var> &e )
760 typedef ADBinaryLess<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
761 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
764 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
766 ADExpr<ADBinaryLess<ADType<A, Nvar, order, Var>,ADCst<C> > >
767 operator< ( const ADType<A, Nvar, order, Var> &e, C a )
769 typedef ADBinaryLess<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
770 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
773 template<
class E,
class C>
775 ADExpr<ADBinaryLess<ADCst<C>,ADExpr<E> > >
776 operator< ( C t, const ADExpr<E> &e )
778 typedef ADBinaryLess<ADCst<C>,ADExpr<E> > expr_t;
779 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
782 template<
class E,
class C>
784 ADExpr<ADBinaryLess<ADExpr<E>,ADCst<C> > >
785 operator< ( const ADExpr<E> &e, C t )
787 typedef ADBinaryLess<ADExpr<E>,ADCst<C> > expr_t;
788 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
827 template<
class E1,
class E2>
829 ADExpr< ADBinaryGreaterOrEqual< ADExpr<E1>, ADExpr<E2> > >
830 operator>= (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
832 typedef ADBinaryGreaterOrEqual<ADExpr<E1>, ADExpr<E2> > expr_t;
833 return ADExpr<expr_t> ( expr_t ( v , w ) );
835 template<
class E,
int Nvar,
int order,
int Var>
837 ADExpr<ADBinaryGreaterOrEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
838 operator>= (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
840 typedef typename E::value_type A;
841 typedef ADBinaryGreaterOrEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
842 return ADExpr<expr_t>( expr_t ( e, v ) );
845 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
847 ADExpr<ADBinaryGreaterOrEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
848 operator>= (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
850 typedef ADBinaryGreaterOrEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
851 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
854 template<
class E,
int Nvar,
int order,
int Var>
856 ADExpr<ADBinaryGreaterOrEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
857 operator>= (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
859 typedef typename E::value_type A;
860 typedef ADBinaryGreaterOrEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
861 return ADExpr<expr_t> ( expr_t ( v , e ) );
864 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
866 ADExpr<ADBinaryGreaterOrEqual<ADCst<C>,ADType<A, Nvar, order, Var> > >
867 operator>= ( C a,
const ADType<A, Nvar, order, Var> &e )
869 typedef ADBinaryGreaterOrEqual<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
870 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
873 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
875 ADExpr<ADBinaryGreaterOrEqual<ADType<A, Nvar, order, Var>,ADCst<C> > >
876 operator>= (
const ADType<A, Nvar, order, Var> &e, C a )
878 typedef ADBinaryGreaterOrEqual<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
879 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
882 template<
class E,
class C>
884 ADExpr<ADBinaryGreaterOrEqual<ADCst<C>,ADExpr<E> > >
887 typedef ADBinaryGreaterOrEqual<ADCst<C>,ADExpr<E> > expr_t;
888 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
891 template<
class E,
class C>
893 ADExpr<ADBinaryGreaterOrEqual<ADExpr<E>,ADCst<C> > >
896 typedef ADBinaryGreaterOrEqual<ADExpr<E>,ADCst<C> > expr_t;
897 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
936 template<
class E1,
class E2>
938 ADExpr< ADBinaryLessOrEqual< ADExpr<E1>, ADExpr<E2> > >
939 operator<= ( const ADExpr<E1> &v,
const ADExpr<E2> &w )
941 typedef ADBinaryLessOrEqual<ADExpr<E1>, ADExpr<E2> > expr_t;
942 return ADExpr<expr_t> ( expr_t ( v , w ) );
944 template<
class E,
int Nvar,
int order,
int Var>
946 ADExpr<ADBinaryLessOrEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
947 operator<= ( const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
949 typedef typename E::value_type A;
950 typedef ADBinaryLessOrEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
951 return ADExpr<expr_t>( expr_t ( e, v ) );
954 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
956 ADExpr<ADBinaryLessOrEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
957 operator<= ( const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
959 typedef ADBinaryLessOrEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
960 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
963 template<
class E,
int Nvar,
int order,
int Var>
965 ADExpr<ADBinaryLessOrEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
966 operator<= ( const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
968 typedef typename E::value_type A;
969 typedef ADBinaryLessOrEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
970 return ADExpr<expr_t> ( expr_t ( v , e ) );
973 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
975 ADExpr<ADBinaryLessOrEqual<ADCst<C>,ADType<A, Nvar, order, Var> > >
976 operator<= ( C a, const ADType<A, Nvar, order, Var> &e )
978 typedef ADBinaryLessOrEqual<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
979 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
982 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
984 ADExpr<ADBinaryLessOrEqual<ADType<A, Nvar, order, Var>,ADCst<C> > >
985 operator<= ( const ADType<A, Nvar, order, Var> &e, C a )
987 typedef ADBinaryLessOrEqual<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
988 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
991 template<
class E,
class C>
993 ADExpr<ADBinaryLessOrEqual<ADCst<C>,ADExpr<E> > >
994 operator<= ( C t, const ADExpr<E> &e )
996 typedef ADBinaryLessOrEqual<ADCst<C>,ADExpr<E> > expr_t;
997 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
1000 template<
class E,
class C>
1002 ADExpr<ADBinaryLessOrEqual<ADExpr<E>,ADCst<C> > >
1003 operator<= ( const ADExpr<E> &e, C t )
1005 typedef ADBinaryLessOrEqual<ADExpr<E>,ADCst<C> > expr_t;
1006 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
1045 template<
class E1,
class E2>
1047 ADExpr< ADBinaryEqual< ADExpr<E1>, ADExpr<E2> > >
1048 operator== (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
1050 typedef ADBinaryEqual<ADExpr<E1>, ADExpr<E2> > expr_t;
1051 return ADExpr<expr_t> ( expr_t ( v , w ) );
1053 template<
class E,
int Nvar,
int order,
int Var>
1055 ADExpr<ADBinaryEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
1056 operator== (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
1058 typedef typename E::value_type A;
1059 typedef ADBinaryEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
1060 return ADExpr<expr_t>( expr_t ( e, v ) );
1063 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
1065 ADExpr<ADBinaryEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
1066 operator== (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
1068 typedef ADBinaryEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
1069 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
1072 template<
class E,
int Nvar,
int order,
int Var>
1074 ADExpr<ADBinaryEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
1075 operator== (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
1077 typedef typename E::value_type A;
1078 typedef ADBinaryEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
1079 return ADExpr<expr_t> ( expr_t ( v , e ) );
1082 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
1084 ADExpr<ADBinaryEqual<ADCst<C>,ADType<A, Nvar, order, Var> > >
1085 operator== ( C a,
const ADType<A, Nvar, order, Var> &e )
1087 typedef ADBinaryEqual<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
1088 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
1091 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
1093 ADExpr<ADBinaryEqual<ADType<A, Nvar, order, Var>,ADCst<C> > >
1094 operator== (
const ADType<A, Nvar, order, Var> &e, C a )
1096 typedef ADBinaryEqual<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
1097 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
1100 template<
class E,
class C>
1102 ADExpr<ADBinaryEqual<ADCst<C>,ADExpr<E> > >
1105 typedef ADBinaryEqual<ADCst<C>,ADExpr<E> > expr_t;
1106 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
1109 template<
class E,
class C>
1111 ADExpr<ADBinaryEqual<ADExpr<E>,ADCst<C> > >
1114 typedef ADBinaryEqual<ADExpr<E>,ADCst<C> > expr_t;
1115 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
1154 template<
class E1,
class E2>
1156 ADExpr< ADBinaryNotEqual< ADExpr<E1>, ADExpr<E2> > >
1157 operator!= (
const ADExpr<E1> &v,
const ADExpr<E2> &w )
1159 typedef ADBinaryNotEqual<ADExpr<E1>, ADExpr<E2> > expr_t;
1160 return ADExpr<expr_t> ( expr_t ( v , w ) );
1162 template<
class E,
int Nvar,
int order,
int Var>
1164 ADExpr<ADBinaryNotEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > >
1165 operator!= (
const ADExpr<E> &e,
const ADType<typename E::value_type, Nvar, order, Var>& v )
1167 typedef typename E::value_type A;
1168 typedef ADBinaryNotEqual<ADExpr<E>,ADType<typename E::value_type, Nvar, order, Var> > expr_t;
1169 return ADExpr<expr_t>( expr_t ( e, v ) );
1172 template<
typename A,
int Nvar,
int order,
int Var1,
int Var2>
1174 ADExpr<ADBinaryNotEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > >
1175 operator!= (
const ADType<A, Nvar, order, Var1> &e1,
const ADType<A, Nvar, order, Var2>& e2 )
1177 typedef ADBinaryNotEqual<ADType<A, Nvar, order, Var1>,ADType<A, Nvar, order, Var2> > expr_t;
1178 return ADExpr<expr_t>( expr_t ( e1 , e2 ) );
1181 template<
class E,
int Nvar,
int order,
int Var>
1183 ADExpr<ADBinaryNotEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > >
1184 operator!= (
const ADType<typename E::value_type, Nvar, order, Var> &v,
const ADExpr<E> &e )
1186 typedef typename E::value_type A;
1187 typedef ADBinaryNotEqual<ADType<typename E::value_type, Nvar, order, Var>,ADExpr<E> > expr_t;
1188 return ADExpr<expr_t> ( expr_t ( v , e ) );
1191 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
1193 ADExpr<ADBinaryNotEqual<ADCst<C>,ADType<A, Nvar, order, Var> > >
1194 operator!= ( C a,
const ADType<A, Nvar, order, Var> &e )
1196 typedef ADBinaryNotEqual<ADCst<C>,ADType<A, Nvar, order, Var> > expr_t;
1197 return ADExpr<expr_t> ( expr_t ( ADCst<C>( a ), e ) );
1200 template<
typename A,
typename C,
int Nvar,
int order,
int Var>
1202 ADExpr<ADBinaryNotEqual<ADType<A, Nvar, order, Var>,ADCst<C> > >
1203 operator!= (
const ADType<A, Nvar, order, Var> &e, C a )
1205 typedef ADBinaryNotEqual<ADType<A, Nvar, order, Var>,ADCst<C> > expr_t;
1206 return ADExpr<expr_t>( expr_t ( e ,ADCst<C>( a ) ) );
1209 template<
class E,
class C>
1211 ADExpr<ADBinaryNotEqual<ADCst<C>,ADExpr<E> > >
1214 typedef ADBinaryNotEqual<ADCst<C>,ADExpr<E> > expr_t;
1215 return ADExpr<expr_t> ( expr_t ( ADCst<C> ( t ),e ) );
1218 template<
class E,
class C>
1220 ADExpr<ADBinaryNotEqual<ADExpr<E>,ADCst<C> > >
1223 typedef ADBinaryNotEqual<ADExpr<E>,ADCst<C> > expr_t;
1224 return ADExpr<expr_t>( expr_t ( e, ADCst<C> ( t ) ) );
bool operator>=(const BareEdge &e1, const BareEdge &e2)
Definition: bareitems.hpp:380
bool operator==(const BareEdge &p1, const BareEdge &p2)
Definition: bareitems.hpp:360
bool operator!=(const BareEdge &p1, const BareEdge &p2)
Definition: bareitems.hpp:350
bool operator>(const BareEdge &e1, const BareEdge &e2)
Definition: bareitems.hpp:370