28 #ifndef CASA_MARRAYLOGICAL_H
29 #define CASA_MARRAYLOGICAL_H
32 #include <casacore/casa/aips.h>
33 #include <casacore/tables/TaQL/MArrayMathBase.h>
34 #include <casacore/casa/Arrays/ArrayLogical.h>
35 #include <casacore/casa/Arrays/ArrayPartMath.h>
36 #include <casacore/casa/BasicMath/Functors.h>
96 template<
typename T,
typename RES=
size_t>
102 template<
typename T,
typename RES=
size_t>
108 template<
typename T>
class MAllFunc :
public MArrayFunctorBase<T,Bool> {
113 template<
typename T>
class MAnyFunc :
public MArrayFunctorBase<T,Bool> {
136 MArray<Bool>
operator< (
const MArray<T>& left,
const MArray<T>& right)
137 {
return (left.isNull() || right.isNull() ? MArray<Bool>() :
138 MArray<Bool> (left.array() < right.array(),
139 left.combineMask(right))); }
180 MArray<Bool>
operator< (
const MArray<T>& left,
const T& right)
181 {
return MArray<Bool> (left.array() < right, left); }
212 MArray<Bool>
operator< (
const T& left,
const MArray<T>& right)
213 {
return MArray<Bool> (left < right.array(), right); }
301 template <
typename T>
309 right.
mask().
begin(), std::equal_to<T>());
322 template <
typename T>
326 compareAllRightMasked (
array.array().begin(),
array.array().end(),
327 value,
array.mask().begin(), std::equal_to<T>())
330 template <
typename T>
338 template <
typename T>
346 right.
mask().
begin(), std::equal_to<T>());
359 template <
typename T>
363 compareAnyRightMasked (
array.array().begin(),
array.array().end(),
364 value,
array.mask().begin(), std::equal_to<T>())
367 template <
typename T>
450 partialArrayMath (res, a, collapseAxes,
MAllFunc<T>());
466 partialArrayMath (res, a, collapseAxes,
MAnyFunc<T>());
Logical functor to test if all elements are true.
Logical functor to test if any elements are true.
bool contiguousStorage() const
Are the array data contiguous? If they are not contiguous, getStorage (see below) needs to make a cop...
contiter cbegin()
Get the begin iterator object for a contiguous array.
iterator begin()
Get the begin iterator object for any array.
Array< Bool > combineMask(const MArrayBase &other) const
Combine this and the other mask.
Bool isNull() const
Is the array null?
const Array< Bool > & mask() const
Get the mask.
Bool hasMask() const
Is there a mask?
Define functors to perform a reduction function on an MArray object.
const Array< T > & array() const
Get access to the array.
Logical functor to count the number of false elements.
Logical functor to count the number of true elements.
Bool isNull() const
Does the node contain no actual node?
this file contains all the compiler specific defines
LatticeExprNode isNaN(const LatticeExprNode &expr)
Test if a value is a NaN.
LatticeExprNode operator&&(const LatticeExprNode &left, const LatticeExprNode &right)
Logical binary operators.
LatticeExprNode operator>(const LatticeExprNode &left, const LatticeExprNode &right)
TableExprNode isFinite(const TableExprNode &node)
Function to test if a scalar or array is finite.
TableExprNode nearAbs(const TableExprNode &left, const TableExprNode &right)
TableExprNode isInf(const TableExprNode &node)
MaskedArray< T > boxedArrayMath(const MaskedArray< T > &array, const IPosition &boxSize, const FuncType &funcObj)
Apply the given ArrayMath reduction function objects to each box in the array.
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
bool operator==(const casacore_allocator< T, ALIGNMENT > &, const casacore_allocator< T, ALIGNMENT > &)
bool operator!=(const casacore_allocator< T, ALIGNMENT > &, const casacore_allocator< T, ALIGNMENT > &)
LatticeExprNode ntrue(const LatticeExprNode &expr)
LatticeExprNode operator<(const LatticeExprNode &left, const LatticeExprNode &right)
LatticeExprNode operator>=(const LatticeExprNode &left, const LatticeExprNode &right)
Bool anyEQ(const TableVector< T > &l, const TableVector< T > &r)
Array< T > slidingArrayMath(const MaskedArray< T > &array, const IPosition &halfBoxSize, const FuncType &funcObj, bool fillEdge=true)
Apply for each element in the array the given ArrayMath reduction function object to the box around t...
bool Bool
Define the standard types used by Casacore.
LatticeExprNode value(const LatticeExprNode &expr)
This function returns the value of the expression without a mask.
LatticeExprNode operator!(const LatticeExprNode &expr)
Bool near(const GaussianBeam &left, const GaussianBeam &other, const Double relWidthTol, const Quantity &absPaTol)
LatticeExprNode operator<=(const LatticeExprNode &left, const LatticeExprNode &right)
LatticeExprNode operator||(const LatticeExprNode &left, const LatticeExprNode &right)
LatticeExprNode nfalse(const LatticeExprNode &expr)
MArray< Bool > partialAnys(const MArray< T > &a, const IPosition &collapseAxes)
Get partial any.
size_t nfalse(const MArray< T > &a)
Count the number of unmasked elements that are False.
Bool allEQ(const MArray< T > &array, const T &value)
size_t ntrue(const MArray< T > &a)
Count the number of unmasked elements that are True.
MArray< Bool > slidingAnys(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding any.
MArray< uInt > slidingNFalse(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding nfalses.
MArray< Bool > boxedAlls(const MArray< T > &a, const IPosition &boxSize)
Get boxed all.
MArray< Bool > slidingAlls(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding all.
MArray< uInt > boxedNFalse(const MArray< T > &a, const IPosition &boxSize)
Get boxed nfalses.
MArray< Bool > partialAlls(const MArray< T > &a, const IPosition &collapseAxes)
Get partial all.
MArray< Bool > near(const MArray< T > &left, const MArray< T > &right, Double tol)
Compare with a given relative or absolute tolerance.
Bool anyEQ(const MArray< T > &left, const MArray< T > &right)
Is any unmasked element equal? The result is False if there are no unmasked elements.
MArray< uInt > slidingNTrue(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding ntrues.
MArray< Bool > isFinite(const MArray< T > &arr)
Test which elements have a finite value.
Bool allEQ(const T &value, const MArray< T > &array)
MArray< Bool > isNaN(const MArray< T > &arr)
Test which elements are NaN.
MArray< Bool > nearAbs(const MArray< T > &left, const MArray< T > &right, Double tol)
MArray< Bool > nearAbs(const T &left, const MArray< T > &right, Double tol)
MArray< Bool > nearAbs(const MArray< T > &left, const T &right, Double tol)
MArray< Bool > near(const MArray< T > &left, const T &right, Double tol)
MArray< size_t > partialNTrue(const MArray< T > &a, const IPosition &collapseAxes)
Get partial ntrues.
MArray< Bool > near(const T &left, const MArray< T > &right, Double tol)
MArray< Bool > isInf(const MArray< T > &arr)
Test which elements are infinite.
MArray< uInt > boxedNTrue(const MArray< T > &a, const IPosition &boxSize)
Get boxed ntrues.
MArray< Bool > boxedAnys(const MArray< T > &a, const IPosition &boxSize)
Get boxed any.
Bool anyEQ(const T &value, const MArray< T > &array)
MArray< size_t > partialNFalse(const MArray< T > &a, const IPosition &collapseAxes)
Get partial nfalses.
Bool anyTrue(const MArray< Bool > &array)
Is any unmasked element true?
Bool allTrue(const MArray< Bool > &array)
Are all unmasked elements true?
Bool allEQ(const MArray< T > &left, const MArray< T > &right)
Are all unmasked elements equal? The result is True if there are no unmasked elements.
Bool anyEQ(const MArray< T > &array, const T &value)