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// Element by element comparisons between the "l" and "r" arrays. The result
125// is true only if the comparison is true for every element of the arrays
126// for which the mask of the MaskedArray is true. For two MaskedArrays,
127// the "and" of the masks is used.
128//
129// <thrown>
130// <li> ArrayConformanceError
131// <li> ArrayError
132// </thrown>
133//
134// <group>
135template <class T>
136bool allLE(const MaskedArray<T> &l, const Array<T> &r);
137template <class T>
138bool allLT(const MaskedArray<T> &l, const Array<T> &r);
139template <class T>
140bool allGE(const MaskedArray<T> &l, const Array<T> &r);
141template <class T>
142bool allGT(const MaskedArray<T> &l, const Array<T> &r);
143template <class T>
144bool allEQ(const MaskedArray<T> &l, const Array<T> &r);
145template <class T>
146bool allNE(const MaskedArray<T> &l, const Array<T> &r);
147//
148// This only makes sense if the array element type is logical valued.
149// <group>
150template <class T>
151bool allAND(const MaskedArray<T> &l, const Array<T> &r);
152template <class T>
153bool allOR(const MaskedArray<T> &l, const Array<T> &r);
154// </group>
155
156template <class T>
157bool allLE(const Array<T> &l, const MaskedArray<T> &r);
158template <class T>
159bool allLT(const Array<T> &l, const MaskedArray<T> &r);
160template <class T>
161bool allGE(const Array<T> &l, const MaskedArray<T> &r);
162template <class T>
163bool allGT(const Array<T> &l, const MaskedArray<T> &r);
164template <class T>
165bool allEQ(const Array<T> &l, const MaskedArray<T> &r);
166template <class T>
167bool allNE(const Array<T> &l, const MaskedArray<T> &r);
168//
169// This only makes sense if the array element type is logical valued.
170// <group>
171template <class T>
172bool allAND(const Array<T> &l, const MaskedArray<T> &r);
173template <class T>
174bool allOR(const Array<T> &l, const MaskedArray<T> &r);
175// </group>
176
177template <class T>
178bool allLE(const MaskedArray<T> &l, const MaskedArray<T> &r);
179template <class T>
180bool allLT(const MaskedArray<T> &l, const MaskedArray<T> &r);
181template <class T>
182bool allGE(const MaskedArray<T> &l, const MaskedArray<T> &r);
183template <class T>
184bool allGT(const MaskedArray<T> &l, const MaskedArray<T> &r);
185template <class T>
186bool allEQ(const MaskedArray<T> &l, const MaskedArray<T> &r);
187template <class T>
188bool allNE(const MaskedArray<T> &l, const MaskedArray<T> &r);
189//
190// This only makes sense if the array element type is logical valued.
191// <group>
192template <class T>
193bool allAND(const MaskedArray<T> &l, const MaskedArray<T> &r);
194template <class T>
195bool allOR(const MaskedArray<T> &l, const MaskedArray<T> &r);
196// </group>
197
198// </group>
199
200//
201// Element by element comparisons between the "l" and "r" arrays. The result
202// is a MaskedLogicalArray.
203//
204// The arrays must conform or an exception is thrown.
205//
206// <thrown>
207// <li> ArrayConformanceError
208// </thrown>
209//
210// <group>
211template <class T>
213template <class T>
215template <class T>
217template <class T>
219template <class T>
221template <class T>
223//
224// This only makes sense if the array element type is logical valued.
225// <group>
226template <class T>
228template <class T>
230// </group>
231
232template <class T>
234template <class T>
236template <class T>
238template <class T>
240template <class T>
242template <class T>
244//
245// This only makes sense if the array element type is logical valued.
246// <group>
247template <class T>
249template <class T>
251// </group>
252
253template <class T>
255template <class T>
257template <class T>
259template <class T>
261template <class T>
263template <class T>
265//
266// This only makes sense if the array element type is logical valued.
267// <group>
268template <class T>
270template <class T>
272// </group>
273
274// </group>
275
276//
277// Logical negation of a MaskedArray. This only makes sense if the array
278// element type is logical valued.
279template <class T>
281
282//
283// Element by element comparisons between an array and a scalar, which
284// behaves as if it were a conformant array filled with the value "val."
285// The result is true only if the comparison is true for every element
286// for which the mask of the MaskedArray is true.
287// <thrown>
288// <li> ArrayError
289// </thrown>
290//
291// <group>
292template <class T>
293bool allLE(const MaskedArray<T> &array, const T &val);
294template <class T>
295bool allLE(const T &val, const MaskedArray<T> &array);
296template <class T>
297bool allLT(const MaskedArray<T> &array, const T &val);
298template <class T>
299bool allLT(const T &val, const MaskedArray<T> &array);
300template <class T>
301bool allGE(const MaskedArray<T> &array, const T &val);
302template <class T>
303bool allGE(const T &val, const MaskedArray<T> &array);
304template <class T>
305bool allGT(const MaskedArray<T> &array, const T &val);
306template <class T>
307bool allGT(const T &val, const MaskedArray<T> &array);
308template <class T>
309bool allEQ(const MaskedArray<T> &array, const T &val);
310template <class T>
311bool allEQ(const T &val, const MaskedArray<T> &array);
312template <class T>
313bool allNE(const MaskedArray<T> &array, const T &val);
314template <class T>
315bool allNE(const T &val, const MaskedArray<T> &array);
316//
317// This only makes sense if the array element type is logical valued.
318// <group>
319template <class T>
320bool allAND(const MaskedArray<T> &array, const T &val);
321template <class T>
322bool allAND(const T &val, const MaskedArray<T> &array);
323template <class T>
324bool allOR(const MaskedArray<T> &array, const T &val);
325template <class T>
326bool allOR(const T &val, const MaskedArray<T> &array);
327// </group>
328//
329// </group>
330
331//
332// Element by element comparisons between an array and a scalar, which
333// behaves as if it were a conformant array filled with the value "val."
334// The result is an MaskedLogicalArray.
335// <group>
336//
337template <class T>
339template <class T>
341template <class T>
343template <class T>
345template <class T>
347template <class T>
349template <class T>
351template <class T>
353template <class T>
355template <class T>
357template <class T>
359template <class T>
361//
362// This only makes sense if the array element type is logical valued.
363// <group>
364template <class T>
366template <class T>
368template <class T>
370template <class T>
372// </group>
373//
374// </group>
375
376// # With two arrays, they must both conform, and the result is done element
377// # by element. For instance anyLE (a, b) imples that some element of a is
378// # less than or equal to every element of b.
379// # NB comparison between two zero-sized arrays is not defined (should it
380// # throw an exception?).
381
382//
383// Element by element comparisons between the "l" and "r" arrays. The result
384// is true only if the comparison is true for some element of the arrays
385// for which the mask of the MaskedArray is true. For two MaskedArrays,
386// the "and" of the masks is used.
387//
388// <thrown>
389// <li> ArrayConformanceError
390// <li> ArrayError
391// </thrown>
392//
393// <group>
394//
395template <class T>
396bool anyLE(const MaskedArray<T> &l, const Array<T> &r);
397template <class T>
398bool anyLT(const MaskedArray<T> &l, const Array<T> &r);
399template <class T>
400bool anyGE(const MaskedArray<T> &l, const Array<T> &r);
401template <class T>
402bool anyGT(const MaskedArray<T> &l, const Array<T> &r);
403template <class T>
404bool anyEQ(const MaskedArray<T> &l, const Array<T> &r);
405template <class T>
406bool anyNE(const MaskedArray<T> &l, const Array<T> &r);
407//
408// This only makes sense if the array element type is logical valued.
409// <group>
410template <class T>
411bool anyAND(const MaskedArray<T> &l, const Array<T> &r);
412template <class T>
413bool anyOR(const MaskedArray<T> &l, const Array<T> &r);
414// </group>
415
416template <class T>
417bool anyLE(const Array<T> &l, const MaskedArray<T> &r);
418template <class T>
419bool anyLT(const Array<T> &l, const MaskedArray<T> &r);
420template <class T>
421bool anyGE(const Array<T> &l, const MaskedArray<T> &r);
422template <class T>
423bool anyGT(const Array<T> &l, const MaskedArray<T> &r);
424template <class T>
425bool anyEQ(const Array<T> &l, const MaskedArray<T> &r);
426template <class T>
427bool anyNE(const Array<T> &l, const MaskedArray<T> &r);
428//
429// This only makes sense if the array element type is logical valued.
430// <group>
431template <class T>
432bool anyAND(const Array<T> &l, const MaskedArray<T> &r);
433template <class T>
434bool anyOR(const Array<T> &l, const MaskedArray<T> &r);
435// </group>
436
437template <class T>
438bool anyLE(const MaskedArray<T> &l, const MaskedArray<T> &r);
439template <class T>
440bool anyLT(const MaskedArray<T> &l, const MaskedArray<T> &r);
441template <class T>
442bool anyGE(const MaskedArray<T> &l, const MaskedArray<T> &r);
443template <class T>
444bool anyGT(const MaskedArray<T> &l, const MaskedArray<T> &r);
445template <class T>
446bool anyEQ(const MaskedArray<T> &l, const MaskedArray<T> &r);
447template <class T>
448bool anyNE(const MaskedArray<T> &l, const MaskedArray<T> &r);
449//
450// This only makes sense if the array element type is logical valued.
451// <group>
452template <class T>
453bool anyAND(const MaskedArray<T> &l, const MaskedArray<T> &r);
454template <class T>
455bool anyOR(const MaskedArray<T> &l, const MaskedArray<T> &r);
456// </group>
457
458// </group>
459
460//
461// Element by element comparisons between an array and a scalar, which
462// behaves as if it were a conformant array filled with the value "val."
463// The result is true only if the comparison is true for some element
464// for which the mask of the MaskedArray is true.
465//
466// <thrown>
467// <li> ArrayError
468// </thrown>
469//
470// <group>
471//
472template <class T>
473bool anyLE(const MaskedArray<T> &array, const T &val);
474template <class T>
475bool anyLE(const T &val, const MaskedArray<T> &array);
476template <class T>
477bool anyLT(const MaskedArray<T> &array, const T &val);
478template <class T>
479bool anyLT(const T &val, const MaskedArray<T> &array);
480template <class T>
481bool anyGE(const MaskedArray<T> &array, const T &val);
482template <class T>
483bool anyGE(const T &val, const MaskedArray<T> &array);
484template <class T>
485bool anyGT(const MaskedArray<T> &array, const T &val);
486template <class T>
487bool anyGT(const T &val, const MaskedArray<T> &array);
488template <class T>
489bool anyEQ(const MaskedArray<T> &array, const T &val);
490template <class T>
491bool anyEQ(const T &val, const MaskedArray<T> &array);
492template <class T>
493bool anyNE(const MaskedArray<T> &array, const T &val);
494template <class T>
495bool anyNE(const T &val, const MaskedArray<T> &array);
496//
497// This only makes sense if the array element type is logical valued.
498// <group>
499template <class T>
500bool anyAND(const MaskedArray<T> &array, const T &val);
501template <class T>
502bool anyAND(const T &val, const MaskedArray<T> &array);
503template <class T>
504bool anyOR(const MaskedArray<T> &array, const T &val);
505template <class T>
506bool anyOR(const T &val, const MaskedArray<T> &array);
507// </group>
508//
509// </group>
510
511// </group>
512
513} // namespace casacore
514
515#include "MaskArrLogi.tcc"
516
517#endif
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
T * array
The actual storage.
Definition Block.h:689
MaskedArray< LogicalArrayElem > MaskedLogicalArray
Definition ArrayFwd.h:20
TableExprNode marray(const TableExprNode &array, const TableExprNode &mask)
Form a masked array.
Definition ExprNode.h:1567
bool anyNE(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator!=(const Array< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator&&(const MaskedArray< T > &l, const MaskedArray< T > &r)
This only makes sense if the array element type is logical valued.
MaskedLogicalArray operator||(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator||(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator!=(const MaskedArray< T > &array, const T &val)
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)
MaskedLogicalArray operator&&(const Array< T > &l, const MaskedArray< T > &r)
This only makes sense if the array element type is logical valued.
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)
MaskedLogicalArray operator==(const Array< T > &l, const MaskedArray< T > &r)
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)
MaskedLogicalArray operator>(const Array< T > &l, const MaskedArray< T > &r)
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.
MaskedLogicalArray operator<=(const MaskedArray< T > &l, const MaskedArray< T > &r)
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)
MaskedLogicalArray operator>=(const MaskedArray< T > &array, const T &val)
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.
MaskedLogicalArray operator||(const MaskedArray< T > &array, const T &val)
MaskedLogicalArray operator==(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allLE(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator>=(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator<=(const Array< 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)
MaskedLogicalArray operator>=(const Array< T > &l, const MaskedArray< T > &r)
bool anyEQ(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator>(const MaskedArray< T > &array, const T &val)
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.
MaskedLogicalArray operator<(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator==(const MaskedArray< T > &array, const T &val)
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)
MaskedLogicalArray operator&&(const T &val, const MaskedArray< T > &array)
bool allNE(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator<(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool anyAND(const MaskedArray< T > &l, const Array< T > &r)
This only makes sense if the array element type is logical valued.
MaskedLogicalArray operator||(const Array< T > &l, const MaskedArray< T > &r)
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)
MaskedLogicalArray operator<(const MaskedArray< T > &array, const T &val)
MaskedLogicalArray operator>(const T &val, const MaskedArray< T > &array)
bool anyEQ(const MaskedArray< T > &l, const Array< T > &r)
MaskedLogicalArray operator<(const Array< T > &l, const MaskedArray< 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)
MaskedLogicalArray operator<=(const MaskedArray< T > &l, const Array< T > &r)
Element by element comparisons between the "l" and "r" arrays.
bool allGT(const MaskedArray< T > &l, const Array< T > &r)
MaskedLogicalArray operator>=(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)
MaskedLogicalArray operator<=(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 Array< T > &r)
MaskedLogicalArray operator<(const MaskedArray< T > &l, const Array< T > &r)
bool allGE(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator>=(const MaskedArray< T > &l, const MaskedArray< T > &r)
bool allGT(const Array< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator<=(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator!(const MaskedArray< T > &marray)
Logical negation of a MaskedArray.
MaskedLogicalArray operator>(const MaskedArray< T > &l, const MaskedArray< T > &r)
MaskedLogicalArray operator==(const T &val, const MaskedArray< T > &array)
MaskedLogicalArray operator!=(const MaskedArray< T > &l, const MaskedArray< T > &r)
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)
MaskedLogicalArray operator&&(const MaskedArray< T > &array, const T &val)
This only makes sense if the array element type is logical valued.
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)
MaskedLogicalArray operator!=(const T &val, const MaskedArray< T > &array)
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)