casacore
Loading...
Searching...
No Matches
MaskArrLogi.h
Go to the documentation of this file.
1//# MaskArrLogi.h: Element by element logical operations on masked arrays.
2//# Copyright (C) 1993,1994,1995,1999,2001
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: casa-feedback@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25
26#ifndef CASA_MASKARRLOGI_2_H
27#define CASA_MASKARRLOGI_2_H
28
29#include "Array.h"
30#include "MaskedArray.h"
31#include "MaskLogiArr.h"
32
33namespace casacore { //# NAMESPACE CASACORE - BEGIN
34
35// <summary>
36// Logical operations for MaskedArrays, and between MaskedArrays and Arrays.
37// </summary>
38// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMaskArrLogi tMaskArrExcp">
39//
40// <prerequisite>
41// <li> <linkto class=Array>Array</linkto>
42// <li> <linkto group="LogiArray.h#LogicalArray">LogicalArray</linkto>
43// <li> <linkto class=MaskedArray>MaskedArray</linkto>
44// </prerequisite>
45//
46// <etymology>
47// MaskArrLogi is short for MaskedArrayLogical, which is too long by the
48// old AIPS++ file naming conventions. This file contains global functions
49// which perform element by element logical operations on masked arrays.
50// </etymology>
51//
52// <synopsis>
53// These functions perform element by element logical operations on
54// masked arrays. With two arrays, they must both conform, and the result
55// is done element by element, for those locations where the mask of the
56// MaskedArray is true. For two MaskedArrays, the "and" of the masks is used.
57//
58// There are two classes of functions. One class returns a MaskedLogicalArray.
59// In these functions, the value of an element of the MaskedLogicalArray is
60// the value of the logical operation applied to the corresponding elements
61// of the input MaskedArrays. The other class of functions returns a single
62// bool. The return value is true if the logical operation returns true for
63// all elements of the input masked arrays for the "all" functions
64// (e.g. allLE()), and returns true if the logical operation returns true for
65// any elements of the input masked arrays for the "any" functions
66// (e.g. anyLE()). The functions which return a single bool throw an exception
67// if the AND of the masks of the input masked arrays has no true elements.
68//
69// For instance allLE (a, b) imples that every element of a is
70// less than or equal to every element of b. Note that with this definition
71// allLE (a, b) and allGE (a, b) can both be false (e.g. a = [1,0] b = [0,1]).
72//
73// NB comparison between two zero-sized arrays is not defined (should it
74// throw an exception?).
75// </synopsis>
76//
77// <example>
78// <srcblock>
79// Vector<int> a(10);
80// Vector<int> b(10);
81// LogicalVector l(10);
82// . . .
83// l = a(a>0) < b(b>0);
84// </srcblock>
85// This example sets those elements of l where ((a>0) && (b>0)) to (a<b).
86// Elements of l where !((a>0) && (b>0)) are unchanged. The result of
87// the comparison is a MaskedLogicalArray. The assignment from this
88// MaskedLogicalArray to the LogicalArray l only assigns those elements
89// where the mask is true.
90// </example>
91//
92// <example>
93// <srcblock>
94// Vector<int> a(10);
95// Vector<int> b(10);
96// bool result;
97// . . .
98// result = allLT (a(a>0), b(b>0));
99// </srcblock>
100// This example sets result to true if, for all elements where
101// ((a>0) && (b>0)), a<b.
102// </example>
103//
104// <motivation>
105// One wants to be able to mask arrays and perform logical operations on
106// those masked arrays. Since the masked arrays are only defined where
107// the masks are true, the result must be a MaskedLogicalArray, or a single
108// bool.
109// </motivation>
110//
111// <todo asof="$DATE:$>
112// <li> Reconsider where the origin of the returned LogicalArray should
113// be located.
114// </todo>
115//
116// <linkfrom anchor="MaskedArray logical operations" classes="MaskedArray Array Vector Matrix Cube">
117// <here>MaskedArray logical operations</here> -- Logical operations
118// for MaskedArrays, and between MaskedArrays and Arrays.
119// </linkfrom>
120//
121// <group name="MaskedArray logical operations">
123
124//
125// Element by element comparisons between the "l" and "r" arrays. The result
126// is true only if the comparison is true for every element of the arrays
127// for which the mask of the MaskedArray is true. For two MaskedArrays,
128// the "and" of the masks is used.
129//
130// <thrown>
131// <li> ArrayConformanceError
132// <li> ArrayError
133// </thrown>
134//
135// <group>
136template<class T> bool allLE (const MaskedArray<T> &l, const Array<T> &r);
137template<class T> bool allLT (const MaskedArray<T> &l, const Array<T> &r);
138template<class T> bool allGE (const MaskedArray<T> &l, const Array<T> &r);
139template<class T> bool allGT (const MaskedArray<T> &l, const Array<T> &r);
140template<class T> bool allEQ (const MaskedArray<T> &l, const Array<T> &r);
141template<class T> bool allNE (const MaskedArray<T> &l, const Array<T> &r);
142//
143// This only makes sense if the array element type is logical valued.
144// <group>
145template<class T> bool allAND (const MaskedArray<T> &l, const Array<T> &r);
146template<class T> bool allOR (const MaskedArray<T> &l, const Array<T> &r);
147// </group>
148
149template<class T> bool allLE (const Array<T> &l, const MaskedArray<T> &r);
150template<class T> bool allLT (const Array<T> &l, const MaskedArray<T> &r);
151template<class T> bool allGE (const Array<T> &l, const MaskedArray<T> &r);
152template<class T> bool allGT (const Array<T> &l, const MaskedArray<T> &r);
153template<class T> bool allEQ (const Array<T> &l, const MaskedArray<T> &r);
154template<class T> bool allNE (const Array<T> &l, const MaskedArray<T> &r);
155//
156// This only makes sense if the array element type is logical valued.
157// <group>
158template<class T> bool allAND (const Array<T> &l, const MaskedArray<T> &r);
159template<class T> bool allOR (const Array<T> &l, const MaskedArray<T> &r);
160// </group>
161
162template<class T>
163 bool allLE (const MaskedArray<T> &l, const MaskedArray<T> &r);
164template<class T>
165 bool allLT (const MaskedArray<T> &l, const MaskedArray<T> &r);
166template<class T>
167 bool allGE (const MaskedArray<T> &l, const MaskedArray<T> &r);
168template<class T>
169 bool allGT (const MaskedArray<T> &l, const MaskedArray<T> &r);
170template<class T>
171 bool allEQ (const MaskedArray<T> &l, const MaskedArray<T> &r);
172template<class T>
173 bool allNE (const MaskedArray<T> &l, const MaskedArray<T> &r);
174//
175// This only makes sense if the array element type is logical valued.
176// <group>
177template<class T>
178 bool allAND (const MaskedArray<T> &l, const MaskedArray<T> &r);
179template<class T>
180 bool allOR (const MaskedArray<T> &l, const MaskedArray<T> &r);
181// </group>
182
183// </group>
184
185
186//
187// Element by element comparisons between the "l" and "r" arrays. The result
188// is a MaskedLogicalArray.
189//
190// The arrays must conform or an exception is thrown.
191//
192// <thrown>
193// <li> ArrayConformanceError
194// </thrown>
195//
196// <group>
197template<class T>
198 MaskedLogicalArray operator <= (const MaskedArray<T> &l, const Array<T> &r);
199template<class T>
200 MaskedLogicalArray operator < (const MaskedArray<T> &l, const Array<T> &r);
201template<class T>
202 MaskedLogicalArray operator >= (const MaskedArray<T> &l, const Array<T> &r);
203template<class T>
204 MaskedLogicalArray operator > (const MaskedArray<T> &l, const Array<T> &r);
205template<class T>
207template<class T>
209//
210// This only makes sense if the array element type is logical valued.
211// <group>
212template<class T>
214template<class T>
216// </group>
217
218template<class T>
219 MaskedLogicalArray operator <= (const Array<T> &l, const MaskedArray<T> &r);
220template<class T>
221 MaskedLogicalArray operator < (const Array<T> &l, const MaskedArray<T> &r);
222template<class T>
223 MaskedLogicalArray operator >= (const Array<T> &l, const MaskedArray<T> &r);
224template<class T>
225 MaskedLogicalArray operator > (const Array<T> &l, const MaskedArray<T> &r);
226template<class T>
228template<class T>
230//
231// This only makes sense if the array element type is logical valued.
232// <group>
233template<class T>
235template<class T>
237// </group>
238
239template<class T>
240 MaskedLogicalArray operator <= (const MaskedArray<T> &l,
241 const MaskedArray<T> &r);
242template<class T>
243 MaskedLogicalArray operator < (const MaskedArray<T> &l,
244 const MaskedArray<T> &r);
245template<class T>
246 MaskedLogicalArray operator >= (const MaskedArray<T> &l,
247 const MaskedArray<T> &r);
248template<class T>
249 MaskedLogicalArray operator > (const MaskedArray<T> &l,
250 const MaskedArray<T> &r);
251template<class T>
253 const MaskedArray<T> &r);
254template<class T>
256 const MaskedArray<T> &r);
257//
258// This only makes sense if the array element type is logical valued.
259// <group>
260template<class T>
262 const MaskedArray<T> &r);
263template<class T>
265 const MaskedArray<T> &r);
266// </group>
267
268// </group>
269
270
271//
272// Logical negation of a MaskedArray. This only makes sense if the array
273// element type is logical valued.
274template<class T>
276
277
278//
279// Element by element comparisons between an array and a scalar, which
280// behaves as if it were a conformant array filled with the value "val."
281// The result is true only if the comparison is true for every element
282// for which the mask of the MaskedArray is true.
283// <thrown>
284// <li> ArrayError
285// </thrown>
286//
287// <group>
288template<class T> bool allLE (const MaskedArray<T> &array, const T &val);
289template<class T> bool allLE (const T &val, const MaskedArray<T> &array);
290template<class T> bool allLT (const MaskedArray<T> &array, const T &val);
291template<class T> bool allLT (const T &val, const MaskedArray<T> &array);
292template<class T> bool allGE (const MaskedArray<T> &array, const T &val);
293template<class T> bool allGE (const T &val, const MaskedArray<T> &array);
294template<class T> bool allGT (const MaskedArray<T> &array, const T &val);
295template<class T> bool allGT (const T &val, const MaskedArray<T> &array);
296template<class T> bool allEQ (const MaskedArray<T> &array, const T &val);
297template<class T> bool allEQ (const T &val, const MaskedArray<T> &array);
298template<class T> bool allNE (const MaskedArray<T> &array, const T &val);
299template<class T> bool allNE (const T &val, const MaskedArray<T> &array);
300//
301// This only makes sense if the array element type is logical valued.
302// <group>
303template<class T> bool allAND (const MaskedArray<T> &array, const T &val);
304template<class T> bool allAND (const T &val, const MaskedArray<T> &array);
305template<class T> bool allOR (const MaskedArray<T> &array, const T &val);
306template<class T> bool allOR (const T &val, const MaskedArray<T> &array);
307// </group>
308//
309// </group>
310
311
312//
313// Element by element comparisons between an array and a scalar, which
314// behaves as if it were a conformant array filled with the value "val."
315// The result is an MaskedLogicalArray.
316// <group>
317//
318template<class T>
319 MaskedLogicalArray operator <= (const MaskedArray<T> &array, const T &val);
320template<class T>
321 MaskedLogicalArray operator <= (const T &val, const MaskedArray<T> &array);
322template<class T>
323 MaskedLogicalArray operator < (const MaskedArray<T> &array, const T &val);
324template<class T>
325 MaskedLogicalArray operator < (const T &val, const MaskedArray<T> &array);
326template<class T>
327 MaskedLogicalArray operator >= (const MaskedArray<T> &array, const T &val);
328template<class T>
329 MaskedLogicalArray operator >= (const T &val, const MaskedArray<T> &array);
330template<class T>
331 MaskedLogicalArray operator > (const MaskedArray<T> &array, const T &val);
332template<class T>
333 MaskedLogicalArray operator > (const T &val, const MaskedArray<T> &array);
334template<class T>
336template<class T>
338template<class T>
340template<class T>
342//
343// This only makes sense if the array element type is logical valued.
344// <group>
345template<class T>
347template<class T>
349template<class T>
351template<class T>
353// </group>
354//
355// </group>
356
357
358//# With two arrays, they must both conform, and the result is done element
359//# by element. For instance anyLE (a, b) imples that some element of a is
360//# less than or equal to every element of b.
361//# NB comparison between two zero-sized arrays is not defined (should it
362//# throw an exception?).
363
364//
365// Element by element comparisons between the "l" and "r" arrays. The result
366// is true only if the comparison is true for some element of the arrays
367// for which the mask of the MaskedArray is true. For two MaskedArrays,
368// the "and" of the masks is used.
369//
370// <thrown>
371// <li> ArrayConformanceError
372// <li> ArrayError
373// </thrown>
374//
375// <group>
376//
377template<class T> bool anyLE (const MaskedArray<T> &l, const Array<T> &r);
378template<class T> bool anyLT (const MaskedArray<T> &l, const Array<T> &r);
379template<class T> bool anyGE (const MaskedArray<T> &l, const Array<T> &r);
380template<class T> bool anyGT (const MaskedArray<T> &l, const Array<T> &r);
381template<class T> bool anyEQ (const MaskedArray<T> &l, const Array<T> &r);
382template<class T> bool anyNE (const MaskedArray<T> &l, const Array<T> &r);
383//
384// This only makes sense if the array element type is logical valued.
385// <group>
386template<class T> bool anyAND (const MaskedArray<T> &l, const Array<T> &r);
387template<class T> bool anyOR (const MaskedArray<T> &l, const Array<T> &r);
388// </group>
389
390
391template<class T> bool anyLE (const Array<T> &l, const MaskedArray<T> &r);
392template<class T> bool anyLT (const Array<T> &l, const MaskedArray<T> &r);
393template<class T> bool anyGE (const Array<T> &l, const MaskedArray<T> &r);
394template<class T> bool anyGT (const Array<T> &l, const MaskedArray<T> &r);
395template<class T> bool anyEQ (const Array<T> &l, const MaskedArray<T> &r);
396template<class T> bool anyNE (const Array<T> &l, const MaskedArray<T> &r);
397//
398// This only makes sense if the array element type is logical valued.
399// <group>
400template<class T> bool anyAND (const Array<T> &l, const MaskedArray<T> &r);
401template<class T> bool anyOR (const Array<T> &l, const MaskedArray<T> &r);
402// </group>
403
404
405template<class T>
406 bool anyLE (const MaskedArray<T> &l, const MaskedArray<T> &r);
407template<class T>
408 bool anyLT (const MaskedArray<T> &l, const MaskedArray<T> &r);
409template<class T>
410 bool anyGE (const MaskedArray<T> &l, const MaskedArray<T> &r);
411template<class T>
412 bool anyGT (const MaskedArray<T> &l, const MaskedArray<T> &r);
413template<class T>
414 bool anyEQ (const MaskedArray<T> &l, const MaskedArray<T> &r);
415template<class T>
416 bool anyNE (const MaskedArray<T> &l, const MaskedArray<T> &r);
417//
418// This only makes sense if the array element type is logical valued.
419// <group>
420template<class T>
421 bool anyAND (const MaskedArray<T> &l, const MaskedArray<T> &r);
422template<class T>
423 bool anyOR (const MaskedArray<T> &l, const MaskedArray<T> &r);
424// </group>
425
426// </group>
427
428
429//
430// Element by element comparisons between an array and a scalar, which
431// behaves as if it were a conformant array filled with the value "val."
432// The result is true only if the comparison is true for some element
433// for which the mask of the MaskedArray is true.
434//
435// <thrown>
436// <li> ArrayError
437// </thrown>
438//
439// <group>
440//
441template<class T> bool anyLE (const MaskedArray<T> &array, const T &val);
442template<class T> bool anyLE (const T &val, const MaskedArray<T> &array);
443template<class T> bool anyLT (const MaskedArray<T> &array, const T &val);
444template<class T> bool anyLT (const T &val, const MaskedArray<T> &array);
445template<class T> bool anyGE (const MaskedArray<T> &array, const T &val);
446template<class T> bool anyGE (const T &val, const MaskedArray<T> &array);
447template<class T> bool anyGT (const MaskedArray<T> &array, const T &val);
448template<class T> bool anyGT (const T &val, const MaskedArray<T> &array);
449template<class T> bool anyEQ (const MaskedArray<T> &array, const T &val);
450template<class T> bool anyEQ (const T &val, const MaskedArray<T> &array);
451template<class T> bool anyNE (const MaskedArray<T> &array, const T &val);
452template<class T> bool anyNE (const T &val, const MaskedArray<T> &array);
453//
454// This only makes sense if the array element type is logical valued.
455// <group>
456template<class T> bool anyAND (const MaskedArray<T> &array, const T &val);
457template<class T> bool anyAND (const T &val, const MaskedArray<T> &array);
458template<class T> bool anyOR (const MaskedArray<T> &array, const T &val);
459template<class T> bool anyOR (const T &val, const MaskedArray<T> &array);
460// </group>
461//
462// </group>
463
464// </group>
465
466
467} //# NAMESPACE CASACORE - END
468
469#include "MaskArrLogi.tcc"
470
471#endif
this file contains all the compiler specific defines
Definition mainpage.dox:28
LatticeExprNode operator&&(const LatticeExprNode &left, const LatticeExprNode &right)
Logical binary operators.
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
Definition ExprNode.h:1933
bool operator==(const casacore_allocator< T, ALIGNMENT > &, const casacore_allocator< T, ALIGNMENT > &)
Definition Allocator.h:127
bool operator!=(const casacore_allocator< T, ALIGNMENT > &, const casacore_allocator< T, ALIGNMENT > &)
Definition Allocator.h:133
TableExprNode marray(const TableExprNode &array, const TableExprNode &mask)
Form a masked array.
Definition ExprNode.h:1939
LatticeExprNode operator!(const LatticeExprNode &expr)
LatticeExprNode operator||(const LatticeExprNode &left, const LatticeExprNode &right)
bool anyNE(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allGT(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyNE(const Array< T > &l, const MaskedArray< T > &r)
bool allLT(const MaskedArray< T > &l, const Array< T > &r)
bool anyOR(const MaskedArray< T > &l, const Array< T > &r)
bool allAND(const MaskedArray< T > &l, const MaskedArray< T > &r)
This only makes sense if the array element type is logical valued.
bool allGE(const MaskedArray< T > &array, const T &val)
bool allEQ(const T &val, const MaskedArray< T > &array)
bool allAND(const T &val, const MaskedArray< T > &array)
bool allNE(const MaskedArray< T > &l, const Array< T > &r)
bool anyAND(const Array< T > &l, const MaskedArray< T > &r)
This only makes sense if the array element type is logical valued.
bool anyAND(const T &val, const MaskedArray< T > &array)
bool allNE(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allGE(const T &val, const MaskedArray< T > &array)
bool allLT(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator==(const MaskedArray< T > &l, const Array< T > &r)
bool allAND(const MaskedArray< T > &array, const T &val)
This only makes sense if the array element type is logical valued.
bool anyGE(const MaskedArray< T > &array, const T &val)
bool anyGT(const Array< T > &l, const MaskedArray< T > &r)
bool anyLT(const MaskedArray< T > &array, const T &val)
MaskedLogicalArray operator&&(const MaskedArray< T > &l, const Array< T > &r)
This only makes sense if the array element type is logical valued.
bool anyOR(const MaskedArray< T > &array, const T &val)
bool allEQ(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allGT(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator||(const MaskedArray< T > &l, const Array< T > &r)
bool anyOR(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyGT(const T &val, const MaskedArray< T > &array)
bool allAND(const MaskedArray< T > &l, const Array< T > &r)
This only makes sense if the array element type is logical valued.
bool allNE(const Array< T > &l, const MaskedArray< T > &r)
bool allLT(const Array< T > &l, const MaskedArray< T > &r)
bool allLT(const MaskedArray< T > &array, const T &val)
bool anyGT(const MaskedArray< T > &array, const T &val)
bool allOR(const T &val, const MaskedArray< T > &array)
bool allEQ(const Array< T > &l, const MaskedArray< T > &r)
bool anyAND(const MaskedArray< T > &array, const T &val)
This only makes sense if the array element type is logical valued.
bool allLE(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyLE(const Array< T > &l, const MaskedArray< T > &r)
bool anyEQ(const T &val, const MaskedArray< T > &array)
bool anyEQ(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyLT(const Array< T > &l, const MaskedArray< T > &r)
bool allAND(const Array< T > &l, const MaskedArray< T > &r)
This only makes sense if the array element type is logical valued.
bool anyAND(const MaskedArray< T > &l, const MaskedArray< T > &r)
This only makes sense if the array element type is logical valued.
bool anyGE(const T &val, const MaskedArray< T > &array)
bool allNE(const T &val, const MaskedArray< T > &array)
bool anyAND(const MaskedArray< T > &l, const Array< T > &r)
This only makes sense if the array element type is logical valued.
bool allEQ(const MaskedArray< T > &l, const Array< T > &r)
bool anyLT(const MaskedArray< T > &l, const Array< T > &r)
bool anyOR(const T &val, const MaskedArray< T > &array)
bool anyLE(const T &val, const MaskedArray< T > &array)
bool anyEQ(const MaskedArray< T > &l, const Array< T > &r)
bool allLE(const MaskedArray< T > &l, const Array< T > &r)
Element by element comparisons between the "l" and "r" arrays.
bool anyEQ(const Array< T > &l, const MaskedArray< T > &r)
bool anyLT(const T &val, const MaskedArray< T > &array)
bool allGT(const MaskedArray< T > &l, const Array< T > &r)
bool allOR(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allOR(const Array< T > &l, const MaskedArray< T > &r)
bool anyNE(const MaskedArray< T > &l, const Array< T > &r)
bool allGE(const Array< T > &l, const MaskedArray< T > &r)
bool anyGT(const MaskedArray< T > &l, const Array< T > &r)
bool allGE(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allGT(const Array< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator!(const MaskedArray< T > &marray)
Logical negation of a MaskedArray.
bool allLT(const T &val, const MaskedArray< T > &array)
bool allLE(const MaskedArray< T > &array, const T &val)
Element by element comparisons between an array and a scalar, which behaves as if it were a conforman...
MaskedLogicalArray operator!=(const MaskedArray< T > &l, const Array< T > &r)
bool anyGT(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyGE(const MaskedArray< T > &l, const Array< T > &r)
bool anyGE(const Array< T > &l, const MaskedArray< T > &r)
bool allOR(const MaskedArray< T > &l, const Array< T > &r)
bool anyLE(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allEQ(const MaskedArray< T > &array, const T &val)
bool anyGE(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyEQ(const MaskedArray< T > &array, const T &val)
bool allNE(const MaskedArray< T > &array, const T &val)
bool anyNE(const MaskedArray< T > &array, const T &val)
bool allLE(const T &val, const MaskedArray< T > &array)
bool allLE(const Array< T > &l, const MaskedArray< T > &r)
bool anyOR(const Array< T > &l, const MaskedArray< T > &r)
bool anyLE(const MaskedArray< T > &array, const T &val)
Element by element comparisons between an array and a scalar, which behaves as if it were a conforman...
bool anyNE(const T &val, const MaskedArray< T > &array)
bool anyLE(const MaskedArray< T > &l, const Array< T > &r)
Element by element comparisons between the "l" and "r" arrays.
bool allOR(const MaskedArray< T > &array, const T &val)
bool allGT(const MaskedArray< T > &array, const T &val)
bool allGE(const MaskedArray< T > &l, const Array< T > &r)
bool anyLT(const MaskedArray< T > &l, const MaskedArray< T > &r)