Chris@49
|
1 // Copyright (C) 2009-2012 NICTA (www.nicta.com.au)
|
Chris@49
|
2 // Copyright (C) 2009-2012 Conrad Sanderson
|
Chris@49
|
3 //
|
Chris@49
|
4 // This Source Code Form is subject to the terms of the Mozilla Public
|
Chris@49
|
5 // License, v. 2.0. If a copy of the MPL was not distributed with this
|
Chris@49
|
6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
Chris@49
|
7
|
Chris@49
|
8
|
Chris@49
|
9 //! \addtogroup operator_relational
|
Chris@49
|
10 //! @{
|
Chris@49
|
11
|
Chris@49
|
12
|
Chris@49
|
13 // < : lt
|
Chris@49
|
14 // > : gt
|
Chris@49
|
15 // <= : lteq
|
Chris@49
|
16 // >= : gteq
|
Chris@49
|
17 // == : eq
|
Chris@49
|
18 // != : noteq
|
Chris@49
|
19
|
Chris@49
|
20
|
Chris@49
|
21
|
Chris@49
|
22 template<typename T1, typename T2>
|
Chris@49
|
23 inline
|
Chris@49
|
24 typename
|
Chris@49
|
25 enable_if2
|
Chris@49
|
26 <
|
Chris@49
|
27 (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typename T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>::value == false)),
|
Chris@49
|
28 const mtGlue<uword, T1, T2, glue_rel_lt>
|
Chris@49
|
29 >::result
|
Chris@49
|
30 operator<
|
Chris@49
|
31 (const T1& X, const T2& Y)
|
Chris@49
|
32 {
|
Chris@49
|
33 arma_extra_debug_sigprint();
|
Chris@49
|
34
|
Chris@49
|
35 return mtGlue<uword, T1, T2, glue_rel_lt>( X, Y );
|
Chris@49
|
36 }
|
Chris@49
|
37
|
Chris@49
|
38
|
Chris@49
|
39
|
Chris@49
|
40 template<typename T1, typename T2>
|
Chris@49
|
41 inline
|
Chris@49
|
42 typename
|
Chris@49
|
43 enable_if2
|
Chris@49
|
44 <
|
Chris@49
|
45 (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typename T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>::value == false)),
|
Chris@49
|
46 const mtGlue<uword, T1, T2, glue_rel_gt>
|
Chris@49
|
47 >::result
|
Chris@49
|
48 operator>
|
Chris@49
|
49 (const T1& X, const T2& Y)
|
Chris@49
|
50 {
|
Chris@49
|
51 arma_extra_debug_sigprint();
|
Chris@49
|
52
|
Chris@49
|
53 return mtGlue<uword, T1, T2, glue_rel_gt>( X, Y );
|
Chris@49
|
54 }
|
Chris@49
|
55
|
Chris@49
|
56
|
Chris@49
|
57
|
Chris@49
|
58 template<typename T1, typename T2>
|
Chris@49
|
59 inline
|
Chris@49
|
60 typename
|
Chris@49
|
61 enable_if2
|
Chris@49
|
62 <
|
Chris@49
|
63 (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typename T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>::value == false)),
|
Chris@49
|
64 const mtGlue<uword, T1, T2, glue_rel_lteq>
|
Chris@49
|
65 >::result
|
Chris@49
|
66 operator<=
|
Chris@49
|
67 (const T1& X, const T2& Y)
|
Chris@49
|
68 {
|
Chris@49
|
69 arma_extra_debug_sigprint();
|
Chris@49
|
70
|
Chris@49
|
71 return mtGlue<uword, T1, T2, glue_rel_lteq>( X, Y );
|
Chris@49
|
72 }
|
Chris@49
|
73
|
Chris@49
|
74
|
Chris@49
|
75
|
Chris@49
|
76 template<typename T1, typename T2>
|
Chris@49
|
77 inline
|
Chris@49
|
78 typename
|
Chris@49
|
79 enable_if2
|
Chris@49
|
80 <
|
Chris@49
|
81 (is_arma_type<T1>::value && is_arma_type<T2>::value && (is_complex<typename T1::elem_type>::value == false) && (is_complex<typename T2::elem_type>::value == false)),
|
Chris@49
|
82 const mtGlue<uword, T1, T2, glue_rel_gteq>
|
Chris@49
|
83 >::result
|
Chris@49
|
84 operator>=
|
Chris@49
|
85 (const T1& X, const T2& Y)
|
Chris@49
|
86 {
|
Chris@49
|
87 arma_extra_debug_sigprint();
|
Chris@49
|
88
|
Chris@49
|
89 return mtGlue<uword, T1, T2, glue_rel_gteq>( X, Y );
|
Chris@49
|
90 }
|
Chris@49
|
91
|
Chris@49
|
92
|
Chris@49
|
93
|
Chris@49
|
94 template<typename T1, typename T2>
|
Chris@49
|
95 inline
|
Chris@49
|
96 typename
|
Chris@49
|
97 enable_if2
|
Chris@49
|
98 <
|
Chris@49
|
99 (is_arma_type<T1>::value && is_arma_type<T2>::value),
|
Chris@49
|
100 const mtGlue<uword, T1, T2, glue_rel_eq>
|
Chris@49
|
101 >::result
|
Chris@49
|
102 operator==
|
Chris@49
|
103 (const T1& X, const T2& Y)
|
Chris@49
|
104 {
|
Chris@49
|
105 arma_extra_debug_sigprint();
|
Chris@49
|
106
|
Chris@49
|
107 return mtGlue<uword, T1, T2, glue_rel_eq>( X, Y );
|
Chris@49
|
108 }
|
Chris@49
|
109
|
Chris@49
|
110
|
Chris@49
|
111
|
Chris@49
|
112 template<typename T1, typename T2>
|
Chris@49
|
113 inline
|
Chris@49
|
114 typename
|
Chris@49
|
115 enable_if2
|
Chris@49
|
116 <
|
Chris@49
|
117 (is_arma_type<T1>::value && is_arma_type<T2>::value),
|
Chris@49
|
118 const mtGlue<uword, T1, T2, glue_rel_noteq>
|
Chris@49
|
119 >::result
|
Chris@49
|
120 operator!=
|
Chris@49
|
121 (const T1& X, const T2& Y)
|
Chris@49
|
122 {
|
Chris@49
|
123 arma_extra_debug_sigprint();
|
Chris@49
|
124
|
Chris@49
|
125 return mtGlue<uword, T1, T2, glue_rel_noteq>( X, Y );
|
Chris@49
|
126 }
|
Chris@49
|
127
|
Chris@49
|
128
|
Chris@49
|
129
|
Chris@49
|
130 //
|
Chris@49
|
131 //
|
Chris@49
|
132 //
|
Chris@49
|
133
|
Chris@49
|
134
|
Chris@49
|
135
|
Chris@49
|
136 template<typename T1>
|
Chris@49
|
137 inline
|
Chris@49
|
138 typename
|
Chris@49
|
139 enable_if2
|
Chris@49
|
140 <
|
Chris@49
|
141 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
142 const mtOp<uword, T1, op_rel_lt_pre>
|
Chris@49
|
143 >::result
|
Chris@49
|
144 operator<
|
Chris@49
|
145 (const typename T1::elem_type val, const T1& X)
|
Chris@49
|
146 {
|
Chris@49
|
147 arma_extra_debug_sigprint();
|
Chris@49
|
148
|
Chris@49
|
149 return mtOp<uword, T1, op_rel_lt_pre>(X, val);
|
Chris@49
|
150 }
|
Chris@49
|
151
|
Chris@49
|
152
|
Chris@49
|
153
|
Chris@49
|
154 template<typename T1>
|
Chris@49
|
155 inline
|
Chris@49
|
156 typename
|
Chris@49
|
157 enable_if2
|
Chris@49
|
158 <
|
Chris@49
|
159 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
160 const mtOp<uword, T1, op_rel_lt_post>
|
Chris@49
|
161 >::result
|
Chris@49
|
162 operator<
|
Chris@49
|
163 (const T1& X, const typename T1::elem_type val)
|
Chris@49
|
164 {
|
Chris@49
|
165 arma_extra_debug_sigprint();
|
Chris@49
|
166
|
Chris@49
|
167 return mtOp<uword, T1, op_rel_lt_post>(X, val);
|
Chris@49
|
168 }
|
Chris@49
|
169
|
Chris@49
|
170
|
Chris@49
|
171
|
Chris@49
|
172 template<typename T1>
|
Chris@49
|
173 inline
|
Chris@49
|
174 typename
|
Chris@49
|
175 enable_if2
|
Chris@49
|
176 <
|
Chris@49
|
177 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
178 const mtOp<uword, T1, op_rel_gt_pre>
|
Chris@49
|
179 >::result
|
Chris@49
|
180 operator>
|
Chris@49
|
181 (const typename T1::elem_type val, const T1& X)
|
Chris@49
|
182 {
|
Chris@49
|
183 arma_extra_debug_sigprint();
|
Chris@49
|
184
|
Chris@49
|
185 return mtOp<uword, T1, op_rel_gt_pre>(X, val);
|
Chris@49
|
186 }
|
Chris@49
|
187
|
Chris@49
|
188
|
Chris@49
|
189
|
Chris@49
|
190 template<typename T1>
|
Chris@49
|
191 inline
|
Chris@49
|
192 typename
|
Chris@49
|
193 enable_if2
|
Chris@49
|
194 <
|
Chris@49
|
195 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
196 const mtOp<uword, T1, op_rel_gt_post>
|
Chris@49
|
197 >::result
|
Chris@49
|
198 operator>
|
Chris@49
|
199 (const T1& X, const typename T1::elem_type val)
|
Chris@49
|
200 {
|
Chris@49
|
201 arma_extra_debug_sigprint();
|
Chris@49
|
202
|
Chris@49
|
203 return mtOp<uword, T1, op_rel_gt_post>(X, val);
|
Chris@49
|
204 }
|
Chris@49
|
205
|
Chris@49
|
206
|
Chris@49
|
207
|
Chris@49
|
208 template<typename T1>
|
Chris@49
|
209 inline
|
Chris@49
|
210 typename
|
Chris@49
|
211 enable_if2
|
Chris@49
|
212 <
|
Chris@49
|
213 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
214 const mtOp<uword, T1, op_rel_lteq_pre>
|
Chris@49
|
215 >::result
|
Chris@49
|
216 operator<=
|
Chris@49
|
217 (const typename T1::elem_type val, const T1& X)
|
Chris@49
|
218 {
|
Chris@49
|
219 arma_extra_debug_sigprint();
|
Chris@49
|
220
|
Chris@49
|
221 return mtOp<uword, T1, op_rel_lteq_pre>(X, val);
|
Chris@49
|
222 }
|
Chris@49
|
223
|
Chris@49
|
224
|
Chris@49
|
225
|
Chris@49
|
226 template<typename T1>
|
Chris@49
|
227 inline
|
Chris@49
|
228 typename
|
Chris@49
|
229 enable_if2
|
Chris@49
|
230 <
|
Chris@49
|
231 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
232 const mtOp<uword, T1, op_rel_lteq_post>
|
Chris@49
|
233 >::result
|
Chris@49
|
234 operator<=
|
Chris@49
|
235 (const T1& X, const typename T1::elem_type val)
|
Chris@49
|
236 {
|
Chris@49
|
237 arma_extra_debug_sigprint();
|
Chris@49
|
238
|
Chris@49
|
239 return mtOp<uword, T1, op_rel_lteq_post>(X, val);
|
Chris@49
|
240 }
|
Chris@49
|
241
|
Chris@49
|
242
|
Chris@49
|
243
|
Chris@49
|
244 template<typename T1>
|
Chris@49
|
245 inline
|
Chris@49
|
246 typename
|
Chris@49
|
247 enable_if2
|
Chris@49
|
248 <
|
Chris@49
|
249 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
250 const mtOp<uword, T1, op_rel_gteq_pre>
|
Chris@49
|
251 >::result
|
Chris@49
|
252 operator>=
|
Chris@49
|
253 (const typename T1::elem_type val, const T1& X)
|
Chris@49
|
254 {
|
Chris@49
|
255 arma_extra_debug_sigprint();
|
Chris@49
|
256
|
Chris@49
|
257 return mtOp<uword, T1, op_rel_gteq_pre>(X, val);
|
Chris@49
|
258 }
|
Chris@49
|
259
|
Chris@49
|
260
|
Chris@49
|
261
|
Chris@49
|
262 template<typename T1>
|
Chris@49
|
263 inline
|
Chris@49
|
264 typename
|
Chris@49
|
265 enable_if2
|
Chris@49
|
266 <
|
Chris@49
|
267 (is_arma_type<T1>::value && (is_complex<typename T1::elem_type>::value == false)),
|
Chris@49
|
268 const mtOp<uword, T1, op_rel_gteq_post>
|
Chris@49
|
269 >::result
|
Chris@49
|
270 operator>=
|
Chris@49
|
271 (const T1& X, const typename T1::elem_type val)
|
Chris@49
|
272 {
|
Chris@49
|
273 arma_extra_debug_sigprint();
|
Chris@49
|
274
|
Chris@49
|
275 return mtOp<uword, T1, op_rel_gteq_post>(X, val);
|
Chris@49
|
276 }
|
Chris@49
|
277
|
Chris@49
|
278
|
Chris@49
|
279
|
Chris@49
|
280 template<typename T1>
|
Chris@49
|
281 inline
|
Chris@49
|
282 typename
|
Chris@49
|
283 enable_if2
|
Chris@49
|
284 <
|
Chris@49
|
285 is_arma_type<T1>::value,
|
Chris@49
|
286 const mtOp<uword, T1, op_rel_eq>
|
Chris@49
|
287 >::result
|
Chris@49
|
288 operator==
|
Chris@49
|
289 (const typename T1::elem_type val, const T1& X)
|
Chris@49
|
290 {
|
Chris@49
|
291 arma_extra_debug_sigprint();
|
Chris@49
|
292
|
Chris@49
|
293 return mtOp<uword, T1, op_rel_eq>(X, val);
|
Chris@49
|
294 }
|
Chris@49
|
295
|
Chris@49
|
296
|
Chris@49
|
297
|
Chris@49
|
298 template<typename T1>
|
Chris@49
|
299 inline
|
Chris@49
|
300 typename
|
Chris@49
|
301 enable_if2
|
Chris@49
|
302 <
|
Chris@49
|
303 is_arma_type<T1>::value,
|
Chris@49
|
304 const mtOp<uword, T1, op_rel_eq>
|
Chris@49
|
305 >::result
|
Chris@49
|
306 operator==
|
Chris@49
|
307 (const T1& X, const typename T1::elem_type val)
|
Chris@49
|
308 {
|
Chris@49
|
309 arma_extra_debug_sigprint();
|
Chris@49
|
310
|
Chris@49
|
311 return mtOp<uword, T1, op_rel_eq>(X, val);
|
Chris@49
|
312 }
|
Chris@49
|
313
|
Chris@49
|
314
|
Chris@49
|
315
|
Chris@49
|
316 template<typename T1>
|
Chris@49
|
317 inline
|
Chris@49
|
318 typename
|
Chris@49
|
319 enable_if2
|
Chris@49
|
320 <
|
Chris@49
|
321 is_arma_type<T1>::value,
|
Chris@49
|
322 const mtOp<uword, T1, op_rel_noteq>
|
Chris@49
|
323 >::result
|
Chris@49
|
324 operator!=
|
Chris@49
|
325 (const typename T1::elem_type val, const T1& X)
|
Chris@49
|
326 {
|
Chris@49
|
327 arma_extra_debug_sigprint();
|
Chris@49
|
328
|
Chris@49
|
329 return mtOp<uword, T1, op_rel_noteq>(X, val);
|
Chris@49
|
330 }
|
Chris@49
|
331
|
Chris@49
|
332
|
Chris@49
|
333
|
Chris@49
|
334 template<typename T1>
|
Chris@49
|
335 inline
|
Chris@49
|
336 typename
|
Chris@49
|
337 enable_if2
|
Chris@49
|
338 <
|
Chris@49
|
339 is_arma_type<T1>::value,
|
Chris@49
|
340 const mtOp<uword, T1, op_rel_noteq>
|
Chris@49
|
341 >::result
|
Chris@49
|
342 operator!=
|
Chris@49
|
343 (const T1& X, const typename T1::elem_type val)
|
Chris@49
|
344 {
|
Chris@49
|
345 arma_extra_debug_sigprint();
|
Chris@49
|
346
|
Chris@49
|
347 return mtOp<uword, T1, op_rel_noteq>(X, val);
|
Chris@49
|
348 }
|
Chris@49
|
349
|
Chris@49
|
350
|
Chris@49
|
351
|
Chris@49
|
352 //! @}
|