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 op_relational
|
Chris@49
|
10 //! @{
|
Chris@49
|
11
|
Chris@49
|
12
|
Chris@49
|
13 #undef operator_rel
|
Chris@49
|
14
|
Chris@49
|
15 #undef arma_applier_mat_pre
|
Chris@49
|
16 #undef arma_applier_mat_post
|
Chris@49
|
17
|
Chris@49
|
18 #undef arma_applier_cube_pre
|
Chris@49
|
19 #undef arma_applier_cube_post
|
Chris@49
|
20
|
Chris@49
|
21
|
Chris@49
|
22 #define arma_applier_mat_pre(operator_rel) \
|
Chris@49
|
23 {\
|
Chris@49
|
24 typedef typename T1::elem_type eT;\
|
Chris@49
|
25 typedef typename Proxy<T1>::ea_type ea_type;\
|
Chris@49
|
26 \
|
Chris@49
|
27 const eT val = X.aux;\
|
Chris@49
|
28 \
|
Chris@49
|
29 const Proxy<T1> P(X.m);\
|
Chris@49
|
30 \
|
Chris@49
|
31 const uword n_rows = P.get_n_rows();\
|
Chris@49
|
32 const uword n_cols = P.get_n_cols();\
|
Chris@49
|
33 \
|
Chris@49
|
34 const bool bad_alias = ( Proxy<T1>::has_subview && P.is_alias(out) );\
|
Chris@49
|
35 \
|
Chris@49
|
36 if(bad_alias == false)\
|
Chris@49
|
37 {\
|
Chris@49
|
38 out.set_size(n_rows, n_cols);\
|
Chris@49
|
39 \
|
Chris@49
|
40 uword* out_mem = out.memptr();\
|
Chris@49
|
41 \
|
Chris@49
|
42 if(Proxy<T1>::prefer_at_accessor == false)\
|
Chris@49
|
43 {\
|
Chris@49
|
44 ea_type PA = P.get_ea();\
|
Chris@49
|
45 const uword n_elem = out.n_elem;\
|
Chris@49
|
46 \
|
Chris@49
|
47 for(uword i=0; i<n_elem; ++i)\
|
Chris@49
|
48 {\
|
Chris@49
|
49 out_mem[i] = (val operator_rel PA[i]) ? uword(1) : uword(0);\
|
Chris@49
|
50 }\
|
Chris@49
|
51 }\
|
Chris@49
|
52 else\
|
Chris@49
|
53 {\
|
Chris@49
|
54 if(n_rows == 1)\
|
Chris@49
|
55 {\
|
Chris@49
|
56 for(uword count=0; count < n_cols; ++count)\
|
Chris@49
|
57 {\
|
Chris@49
|
58 out_mem[count] = (val operator_rel P.at(0,count)) ? uword(1) : uword(0);\
|
Chris@49
|
59 }\
|
Chris@49
|
60 }\
|
Chris@49
|
61 else\
|
Chris@49
|
62 {\
|
Chris@49
|
63 for(uword col=0; col < n_cols; ++col)\
|
Chris@49
|
64 for(uword row=0; row < n_rows; ++row)\
|
Chris@49
|
65 {\
|
Chris@49
|
66 *out_mem = (val operator_rel P.at(row,col)) ? uword(1) : uword(0);\
|
Chris@49
|
67 out_mem++;\
|
Chris@49
|
68 }\
|
Chris@49
|
69 }\
|
Chris@49
|
70 }\
|
Chris@49
|
71 }\
|
Chris@49
|
72 else\
|
Chris@49
|
73 {\
|
Chris@49
|
74 const Mat<eT> tmp(P.Q);\
|
Chris@49
|
75 \
|
Chris@49
|
76 out = (val) operator_rel (tmp);\
|
Chris@49
|
77 }\
|
Chris@49
|
78 }
|
Chris@49
|
79
|
Chris@49
|
80
|
Chris@49
|
81
|
Chris@49
|
82 #define arma_applier_mat_post(operator_rel) \
|
Chris@49
|
83 {\
|
Chris@49
|
84 typedef typename T1::elem_type eT;\
|
Chris@49
|
85 typedef typename Proxy<T1>::ea_type ea_type;\
|
Chris@49
|
86 \
|
Chris@49
|
87 const eT val = X.aux;\
|
Chris@49
|
88 \
|
Chris@49
|
89 const Proxy<T1> P(X.m);\
|
Chris@49
|
90 \
|
Chris@49
|
91 const uword n_rows = P.get_n_rows();\
|
Chris@49
|
92 const uword n_cols = P.get_n_cols();\
|
Chris@49
|
93 \
|
Chris@49
|
94 const bool bad_alias = ( Proxy<T1>::has_subview && P.is_alias(out) );\
|
Chris@49
|
95 \
|
Chris@49
|
96 if(bad_alias == false)\
|
Chris@49
|
97 {\
|
Chris@49
|
98 out.set_size(n_rows, n_cols);\
|
Chris@49
|
99 \
|
Chris@49
|
100 uword* out_mem = out.memptr();\
|
Chris@49
|
101 \
|
Chris@49
|
102 if(Proxy<T1>::prefer_at_accessor == false)\
|
Chris@49
|
103 {\
|
Chris@49
|
104 ea_type PA = P.get_ea();\
|
Chris@49
|
105 const uword n_elem = out.n_elem;\
|
Chris@49
|
106 \
|
Chris@49
|
107 for(uword i=0; i<n_elem; ++i)\
|
Chris@49
|
108 {\
|
Chris@49
|
109 out_mem[i] = (PA[i] operator_rel val) ? uword(1) : uword(0);\
|
Chris@49
|
110 }\
|
Chris@49
|
111 }\
|
Chris@49
|
112 else\
|
Chris@49
|
113 {\
|
Chris@49
|
114 if(n_rows == 1)\
|
Chris@49
|
115 {\
|
Chris@49
|
116 for(uword count=0; count < n_cols; ++count)\
|
Chris@49
|
117 {\
|
Chris@49
|
118 out_mem[count] = (P.at(0,count) operator_rel val) ? uword(1) : uword(0);\
|
Chris@49
|
119 }\
|
Chris@49
|
120 }\
|
Chris@49
|
121 else\
|
Chris@49
|
122 {\
|
Chris@49
|
123 for(uword col=0; col < n_cols; ++col)\
|
Chris@49
|
124 for(uword row=0; row < n_rows; ++row)\
|
Chris@49
|
125 {\
|
Chris@49
|
126 *out_mem = (P.at(row,col) operator_rel val) ? uword(1) : uword(0);\
|
Chris@49
|
127 out_mem++;\
|
Chris@49
|
128 }\
|
Chris@49
|
129 }\
|
Chris@49
|
130 }\
|
Chris@49
|
131 }\
|
Chris@49
|
132 else\
|
Chris@49
|
133 {\
|
Chris@49
|
134 const Mat<eT> tmp(P.Q);\
|
Chris@49
|
135 \
|
Chris@49
|
136 out = (tmp) operator_rel (val);\
|
Chris@49
|
137 }\
|
Chris@49
|
138 }
|
Chris@49
|
139
|
Chris@49
|
140
|
Chris@49
|
141
|
Chris@49
|
142 #define arma_applier_cube_pre(operator_rel) \
|
Chris@49
|
143 {\
|
Chris@49
|
144 typedef typename T1::elem_type eT;\
|
Chris@49
|
145 typedef typename ProxyCube<T1>::ea_type ea_type;\
|
Chris@49
|
146 \
|
Chris@49
|
147 const eT val = X.aux;\
|
Chris@49
|
148 \
|
Chris@49
|
149 const ProxyCube<T1> P(X.m);\
|
Chris@49
|
150 \
|
Chris@49
|
151 const uword n_rows = P.get_n_rows();\
|
Chris@49
|
152 const uword n_cols = P.get_n_cols();\
|
Chris@49
|
153 const uword n_slices = P.get_n_slices();\
|
Chris@49
|
154 \
|
Chris@49
|
155 const bool bad_alias = ( ProxyCube<T1>::has_subview && P.is_alias(out) );\
|
Chris@49
|
156 \
|
Chris@49
|
157 if(bad_alias == false)\
|
Chris@49
|
158 {\
|
Chris@49
|
159 out.set_size(n_rows, n_cols, n_slices);\
|
Chris@49
|
160 \
|
Chris@49
|
161 uword* out_mem = out.memptr();\
|
Chris@49
|
162 \
|
Chris@49
|
163 if(ProxyCube<T1>::prefer_at_accessor == false)\
|
Chris@49
|
164 {\
|
Chris@49
|
165 ea_type PA = P.get_ea();\
|
Chris@49
|
166 const uword n_elem = out.n_elem;\
|
Chris@49
|
167 \
|
Chris@49
|
168 for(uword i=0; i<n_elem; ++i)\
|
Chris@49
|
169 {\
|
Chris@49
|
170 out_mem[i] = (val operator_rel PA[i]) ? uword(1) : uword(0);\
|
Chris@49
|
171 }\
|
Chris@49
|
172 }\
|
Chris@49
|
173 else\
|
Chris@49
|
174 {\
|
Chris@49
|
175 for(uword slice=0; slice < n_slices; ++slice)\
|
Chris@49
|
176 for(uword col=0; col < n_cols; ++col )\
|
Chris@49
|
177 for(uword row=0; row < n_rows; ++row )\
|
Chris@49
|
178 {\
|
Chris@49
|
179 *out_mem = (val operator_rel P.at(row,col,slice)) ? uword(1) : uword(0);\
|
Chris@49
|
180 out_mem++;\
|
Chris@49
|
181 }\
|
Chris@49
|
182 }\
|
Chris@49
|
183 }\
|
Chris@49
|
184 else\
|
Chris@49
|
185 {\
|
Chris@49
|
186 const unwrap_cube<typename ProxyCube<T1>::stored_type> tmp(P.Q);\
|
Chris@49
|
187 \
|
Chris@49
|
188 out = (val) operator_rel (tmp.M);\
|
Chris@49
|
189 }\
|
Chris@49
|
190 }
|
Chris@49
|
191
|
Chris@49
|
192
|
Chris@49
|
193
|
Chris@49
|
194 #define arma_applier_cube_post(operator_rel) \
|
Chris@49
|
195 {\
|
Chris@49
|
196 typedef typename T1::elem_type eT;\
|
Chris@49
|
197 typedef typename ProxyCube<T1>::ea_type ea_type;\
|
Chris@49
|
198 \
|
Chris@49
|
199 const eT val = X.aux;\
|
Chris@49
|
200 \
|
Chris@49
|
201 const ProxyCube<T1> P(X.m);\
|
Chris@49
|
202 \
|
Chris@49
|
203 const uword n_rows = P.get_n_rows();\
|
Chris@49
|
204 const uword n_cols = P.get_n_cols();\
|
Chris@49
|
205 const uword n_slices = P.get_n_slices();\
|
Chris@49
|
206 \
|
Chris@49
|
207 const bool bad_alias = ( ProxyCube<T1>::has_subview && P.is_alias(out) );\
|
Chris@49
|
208 \
|
Chris@49
|
209 if(bad_alias == false)\
|
Chris@49
|
210 {\
|
Chris@49
|
211 out.set_size(n_rows, n_cols, n_slices);\
|
Chris@49
|
212 \
|
Chris@49
|
213 uword* out_mem = out.memptr();\
|
Chris@49
|
214 \
|
Chris@49
|
215 if(ProxyCube<T1>::prefer_at_accessor == false)\
|
Chris@49
|
216 {\
|
Chris@49
|
217 ea_type PA = P.get_ea();\
|
Chris@49
|
218 const uword n_elem = out.n_elem;\
|
Chris@49
|
219 \
|
Chris@49
|
220 for(uword i=0; i<n_elem; ++i)\
|
Chris@49
|
221 {\
|
Chris@49
|
222 out_mem[i] = (PA[i] operator_rel val) ? uword(1) : uword(0);\
|
Chris@49
|
223 }\
|
Chris@49
|
224 }\
|
Chris@49
|
225 else\
|
Chris@49
|
226 {\
|
Chris@49
|
227 for(uword slice=0; slice < n_slices; ++slice)\
|
Chris@49
|
228 for(uword col=0; col < n_cols; ++col )\
|
Chris@49
|
229 for(uword row=0; row < n_rows; ++row )\
|
Chris@49
|
230 {\
|
Chris@49
|
231 *out_mem = (P.at(row,col,slice) operator_rel val) ? uword(1) : uword(0);\
|
Chris@49
|
232 out_mem++;\
|
Chris@49
|
233 }\
|
Chris@49
|
234 }\
|
Chris@49
|
235 }\
|
Chris@49
|
236 else\
|
Chris@49
|
237 {\
|
Chris@49
|
238 const unwrap_cube<typename ProxyCube<T1>::stored_type> tmp(P.Q);\
|
Chris@49
|
239 \
|
Chris@49
|
240 out = (tmp.M) operator_rel (val);\
|
Chris@49
|
241 }\
|
Chris@49
|
242 }
|
Chris@49
|
243
|
Chris@49
|
244
|
Chris@49
|
245
|
Chris@49
|
246 template<typename T1>
|
Chris@49
|
247 inline
|
Chris@49
|
248 void
|
Chris@49
|
249 op_rel_lt_pre::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_lt_pre>& X)
|
Chris@49
|
250 {
|
Chris@49
|
251 arma_extra_debug_sigprint();
|
Chris@49
|
252
|
Chris@49
|
253 arma_applier_mat_pre( < );
|
Chris@49
|
254 }
|
Chris@49
|
255
|
Chris@49
|
256
|
Chris@49
|
257
|
Chris@49
|
258 template<typename T1>
|
Chris@49
|
259 inline
|
Chris@49
|
260 void
|
Chris@49
|
261 op_rel_gt_pre::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_gt_pre>& X)
|
Chris@49
|
262 {
|
Chris@49
|
263 arma_extra_debug_sigprint();
|
Chris@49
|
264
|
Chris@49
|
265 arma_applier_mat_pre( > );
|
Chris@49
|
266 }
|
Chris@49
|
267
|
Chris@49
|
268
|
Chris@49
|
269
|
Chris@49
|
270 template<typename T1>
|
Chris@49
|
271 inline
|
Chris@49
|
272 void
|
Chris@49
|
273 op_rel_lteq_pre::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_lteq_pre>& X)
|
Chris@49
|
274 {
|
Chris@49
|
275 arma_extra_debug_sigprint();
|
Chris@49
|
276
|
Chris@49
|
277 arma_applier_mat_pre( <= );
|
Chris@49
|
278 }
|
Chris@49
|
279
|
Chris@49
|
280
|
Chris@49
|
281
|
Chris@49
|
282 template<typename T1>
|
Chris@49
|
283 inline
|
Chris@49
|
284 void
|
Chris@49
|
285 op_rel_gteq_pre::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_gteq_pre>& X)
|
Chris@49
|
286 {
|
Chris@49
|
287 arma_extra_debug_sigprint();
|
Chris@49
|
288
|
Chris@49
|
289 arma_applier_mat_pre( >= );
|
Chris@49
|
290 }
|
Chris@49
|
291
|
Chris@49
|
292
|
Chris@49
|
293
|
Chris@49
|
294 template<typename T1>
|
Chris@49
|
295 inline
|
Chris@49
|
296 void
|
Chris@49
|
297 op_rel_lt_post::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_lt_post>& X)
|
Chris@49
|
298 {
|
Chris@49
|
299 arma_extra_debug_sigprint();
|
Chris@49
|
300
|
Chris@49
|
301 arma_applier_mat_post( < );
|
Chris@49
|
302 }
|
Chris@49
|
303
|
Chris@49
|
304
|
Chris@49
|
305
|
Chris@49
|
306 template<typename T1>
|
Chris@49
|
307 inline
|
Chris@49
|
308 void
|
Chris@49
|
309 op_rel_gt_post::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_gt_post>& X)
|
Chris@49
|
310 {
|
Chris@49
|
311 arma_extra_debug_sigprint();
|
Chris@49
|
312
|
Chris@49
|
313 arma_applier_mat_post( > );
|
Chris@49
|
314 }
|
Chris@49
|
315
|
Chris@49
|
316
|
Chris@49
|
317
|
Chris@49
|
318 template<typename T1>
|
Chris@49
|
319 inline
|
Chris@49
|
320 void
|
Chris@49
|
321 op_rel_lteq_post::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_lteq_post>& X)
|
Chris@49
|
322 {
|
Chris@49
|
323 arma_extra_debug_sigprint();
|
Chris@49
|
324
|
Chris@49
|
325 arma_applier_mat_post( <= );
|
Chris@49
|
326 }
|
Chris@49
|
327
|
Chris@49
|
328
|
Chris@49
|
329
|
Chris@49
|
330 template<typename T1>
|
Chris@49
|
331 inline
|
Chris@49
|
332 void
|
Chris@49
|
333 op_rel_gteq_post::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_gteq_post>& X)
|
Chris@49
|
334 {
|
Chris@49
|
335 arma_extra_debug_sigprint();
|
Chris@49
|
336
|
Chris@49
|
337 arma_applier_mat_post( >= );
|
Chris@49
|
338 }
|
Chris@49
|
339
|
Chris@49
|
340
|
Chris@49
|
341
|
Chris@49
|
342 template<typename T1>
|
Chris@49
|
343 inline
|
Chris@49
|
344 void
|
Chris@49
|
345 op_rel_eq::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_eq>& X)
|
Chris@49
|
346 {
|
Chris@49
|
347 arma_extra_debug_sigprint();
|
Chris@49
|
348
|
Chris@49
|
349 arma_applier_mat_post( == );
|
Chris@49
|
350 }
|
Chris@49
|
351
|
Chris@49
|
352
|
Chris@49
|
353
|
Chris@49
|
354 template<typename T1>
|
Chris@49
|
355 inline
|
Chris@49
|
356 void
|
Chris@49
|
357 op_rel_noteq::apply(Mat<uword>& out, const mtOp<uword, T1, op_rel_noteq>& X)
|
Chris@49
|
358 {
|
Chris@49
|
359 arma_extra_debug_sigprint();
|
Chris@49
|
360
|
Chris@49
|
361 arma_applier_mat_post( != );
|
Chris@49
|
362 }
|
Chris@49
|
363
|
Chris@49
|
364
|
Chris@49
|
365
|
Chris@49
|
366 //
|
Chris@49
|
367 //
|
Chris@49
|
368 //
|
Chris@49
|
369
|
Chris@49
|
370
|
Chris@49
|
371
|
Chris@49
|
372 template<typename T1>
|
Chris@49
|
373 inline
|
Chris@49
|
374 void
|
Chris@49
|
375 op_rel_lt_pre::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_lt_pre>& X)
|
Chris@49
|
376 {
|
Chris@49
|
377 arma_extra_debug_sigprint();
|
Chris@49
|
378
|
Chris@49
|
379 arma_applier_cube_pre( < );
|
Chris@49
|
380 }
|
Chris@49
|
381
|
Chris@49
|
382
|
Chris@49
|
383
|
Chris@49
|
384 template<typename T1>
|
Chris@49
|
385 inline
|
Chris@49
|
386 void
|
Chris@49
|
387 op_rel_gt_pre::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_gt_pre>& X)
|
Chris@49
|
388 {
|
Chris@49
|
389 arma_extra_debug_sigprint();
|
Chris@49
|
390
|
Chris@49
|
391 arma_applier_cube_pre( > );
|
Chris@49
|
392 }
|
Chris@49
|
393
|
Chris@49
|
394
|
Chris@49
|
395
|
Chris@49
|
396 template<typename T1>
|
Chris@49
|
397 inline
|
Chris@49
|
398 void
|
Chris@49
|
399 op_rel_lteq_pre::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_lteq_pre>& X)
|
Chris@49
|
400 {
|
Chris@49
|
401 arma_extra_debug_sigprint();
|
Chris@49
|
402
|
Chris@49
|
403 arma_applier_cube_pre( <= );
|
Chris@49
|
404 }
|
Chris@49
|
405
|
Chris@49
|
406
|
Chris@49
|
407
|
Chris@49
|
408 template<typename T1>
|
Chris@49
|
409 inline
|
Chris@49
|
410 void
|
Chris@49
|
411 op_rel_gteq_pre::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_gteq_pre>& X)
|
Chris@49
|
412 {
|
Chris@49
|
413 arma_extra_debug_sigprint();
|
Chris@49
|
414
|
Chris@49
|
415 arma_applier_cube_pre( >= );
|
Chris@49
|
416 }
|
Chris@49
|
417
|
Chris@49
|
418
|
Chris@49
|
419
|
Chris@49
|
420 template<typename T1>
|
Chris@49
|
421 inline
|
Chris@49
|
422 void
|
Chris@49
|
423 op_rel_lt_post::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_lt_post>& X)
|
Chris@49
|
424 {
|
Chris@49
|
425 arma_extra_debug_sigprint();
|
Chris@49
|
426
|
Chris@49
|
427 arma_applier_cube_post( < );
|
Chris@49
|
428 }
|
Chris@49
|
429
|
Chris@49
|
430
|
Chris@49
|
431
|
Chris@49
|
432 template<typename T1>
|
Chris@49
|
433 inline
|
Chris@49
|
434 void
|
Chris@49
|
435 op_rel_gt_post::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_gt_post>& X)
|
Chris@49
|
436 {
|
Chris@49
|
437 arma_extra_debug_sigprint();
|
Chris@49
|
438
|
Chris@49
|
439 arma_applier_cube_post( > );
|
Chris@49
|
440 }
|
Chris@49
|
441
|
Chris@49
|
442
|
Chris@49
|
443
|
Chris@49
|
444 template<typename T1>
|
Chris@49
|
445 inline
|
Chris@49
|
446 void
|
Chris@49
|
447 op_rel_lteq_post::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_lteq_post>& X)
|
Chris@49
|
448 {
|
Chris@49
|
449 arma_extra_debug_sigprint();
|
Chris@49
|
450
|
Chris@49
|
451 arma_applier_cube_post( <= );
|
Chris@49
|
452 }
|
Chris@49
|
453
|
Chris@49
|
454
|
Chris@49
|
455
|
Chris@49
|
456 template<typename T1>
|
Chris@49
|
457 inline
|
Chris@49
|
458 void
|
Chris@49
|
459 op_rel_gteq_post::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_gteq_post>& X)
|
Chris@49
|
460 {
|
Chris@49
|
461 arma_extra_debug_sigprint();
|
Chris@49
|
462
|
Chris@49
|
463 arma_applier_cube_post( >= );
|
Chris@49
|
464 }
|
Chris@49
|
465
|
Chris@49
|
466
|
Chris@49
|
467
|
Chris@49
|
468 template<typename T1>
|
Chris@49
|
469 inline
|
Chris@49
|
470 void
|
Chris@49
|
471 op_rel_eq::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_eq>& X)
|
Chris@49
|
472 {
|
Chris@49
|
473 arma_extra_debug_sigprint();
|
Chris@49
|
474
|
Chris@49
|
475 arma_applier_cube_post( == );
|
Chris@49
|
476 }
|
Chris@49
|
477
|
Chris@49
|
478
|
Chris@49
|
479
|
Chris@49
|
480 template<typename T1>
|
Chris@49
|
481 inline
|
Chris@49
|
482 void
|
Chris@49
|
483 op_rel_noteq::apply(Cube<uword>& out, const mtOpCube<uword, T1, op_rel_noteq>& X)
|
Chris@49
|
484 {
|
Chris@49
|
485 arma_extra_debug_sigprint();
|
Chris@49
|
486
|
Chris@49
|
487 arma_applier_cube_post( != );
|
Chris@49
|
488 }
|
Chris@49
|
489
|
Chris@49
|
490
|
Chris@49
|
491
|
Chris@49
|
492 #undef arma_applier_mat_pre
|
Chris@49
|
493 #undef arma_applier_mat_post
|
Chris@49
|
494
|
Chris@49
|
495 #undef arma_applier_cube_pre
|
Chris@49
|
496 #undef arma_applier_cube_post
|
Chris@49
|
497
|
Chris@49
|
498
|
Chris@49
|
499
|
Chris@49
|
500 //! @}
|