trajopt
 All Classes Namespaces Files Functions Variables Typedefs Pages
expr_op_overloads.hpp
1 #pragma once
2 #include "expr_ops.hpp"
3 
4 namespace sco {
5 
6 inline AffExpr operator+(const Var& x, double y) {
7  return exprAdd(AffExpr(x), y);
8 }
9 inline AffExpr operator+(const AffExpr& x, double y) {
10  return exprAdd(x, y);
11 }
12 inline QuadExpr operator+(const QuadExpr& x, double y) {
13  return exprAdd(x, y);
14 }
15 
16 inline AffExpr operator+(const Var& x, const Var& y) {
17  return exprAdd(AffExpr(x), y);
18 }
19 inline AffExpr operator+(const AffExpr& x, const Var& y) {
20  return exprAdd(x, y);
21 }
22 inline QuadExpr operator+(const QuadExpr& x, const Var& y) {
23  return exprAdd(x, y);
24 }
25 
26 inline AffExpr operator+(const Var& x, const AffExpr& y) {
27  return exprAdd(AffExpr(x), y);
28 }
29 inline AffExpr operator+(const AffExpr& x, const AffExpr& y) {
30  return exprAdd(x, y);
31 }
32 inline QuadExpr operator+(const QuadExpr& x, const AffExpr& y) {
33  return exprAdd(x, y);
34 }
35 
36 inline QuadExpr operator+(const Var& x, const QuadExpr& y) {
37  return exprAdd(QuadExpr(x), y);
38 }
39 inline QuadExpr operator+(const AffExpr& x, const QuadExpr& y) {
40  return exprAdd(QuadExpr(x), y);
41 }
42 inline QuadExpr operator+(const QuadExpr& x, const QuadExpr& y) {
43  return exprAdd(x, y);
44 }
45 
46 
47 
48 
49 inline AffExpr operator-(const Var& x, double y) {
50  return exprSub(AffExpr(x), y);
51 }
52 inline AffExpr operator-(const AffExpr& x, double y) {
53  return exprSub(x, y);
54 }
55 inline QuadExpr operator-(const QuadExpr& x, double y) {
56  return exprSub(x, y);
57 }
58 
59 inline AffExpr operator-(const Var& x, const Var& y) {
60  return exprSub(AffExpr(x), y);
61 }
62 inline AffExpr operator-(const AffExpr& x, const Var& y) {
63  return exprSub(x, y);
64 }
65 inline QuadExpr operator-(const QuadExpr& x, const Var& y) {
66  return exprSub(x, y);
67 }
68 
69 inline AffExpr operator-(const Var& x, const AffExpr& y) {
70  return exprSub(AffExpr(x), y);
71 }
72 inline AffExpr operator-(const AffExpr& x, const AffExpr& y) {
73  return exprSub(x, y);
74 }
75 inline QuadExpr operator-(const QuadExpr& x, const AffExpr& y) {
76  return exprSub(x, y);
77 }
78 
79 inline QuadExpr operator-(const Var& x, const QuadExpr& y) {
80  return exprSub(QuadExpr(x), y);
81 }
82 inline QuadExpr operator-(const AffExpr& x, const QuadExpr& y) {
83  return exprSub(QuadExpr(x), y);
84 }
85 inline QuadExpr operator-(const QuadExpr& x, const QuadExpr& y) {
86  return exprSub(x, y);
87 }
88 
90 
91 
92 
93 inline AffExpr operator*(double a, const Var& b) {
94  return exprMult(b, a);
95 }
96 inline AffExpr operator*(double a, const AffExpr& b) {
97  return exprMult(b, a);
98 }
99 inline QuadExpr operator*(double a, const QuadExpr& b) {
100  return exprMult(b, a);
101 }
102 
103 inline AffExpr operator*(const Var& a, double b) {
104  return exprMult(a, b);
105 }
106 inline AffExpr operator*(const AffExpr& a, double b) {
107  return exprMult(a, b);
108 }
109 inline QuadExpr operator*(const QuadExpr& a, double b) {
110  return exprMult(a, b);
111 }
112 
113 inline AffExpr operator-(const Var& a) {
114  return exprMult(a, -1);
115 }
116 inline AffExpr operator-(const AffExpr& a) {
117  return exprMult(a, -1);
118 }
119 
120 }