Go to the documentation of this file.
28 #ifndef CASA_MARRAYMATH_H
29 #define CASA_MARRAYMATH_H
32 #include <casacore/casa/aips.h>
33 #include <casacore/tables/TaQL/MArray.h>
34 #include <casacore/tables/TaQL/MArrayMathBase.h>
35 #include <casacore/casa/Arrays/ArrayPartMath.h>
36 #include <casacore/casa/Arrays/ArrayIter.h>
95 template<
typename T>
class MSumFunc :
public MArrayFunctorBase<T> {
100 template<
typename T>
class MSumSqrFunc :
public MArrayFunctorBase<T> {
103 T operator() (
const MArray<T>& arr)
const {
return sumsqr(arr); }
105 template<
typename T>
class MProductFunc :
public MArrayFunctorBase<T> {
110 template<
typename T>
class MMinFunc :
public MArrayFunctorBase<T> {
115 template<
typename T>
class MMaxFunc :
public MArrayFunctorBase<T> {
120 template<
typename T>
class MMeanFunc :
public MArrayFunctorBase<T> {
134 template<
typename T>
class MStddevFunc :
public MArrayFunctorBase<T> {
143 template<
typename T>
class MAvdevFunc :
public MArrayFunctorBase<T> {
148 template<
typename T>
class MRmsFunc :
public MArrayFunctorBase<T> {
153 template<
typename T>
class MMedianFunc :
public MArrayFunctorBase<T> {
157 : itsSorted(sorted), itsTakeEvenMean(takeEvenMean), itsInPlace(inPlace) {}
160 {
return median(arr, itsSorted, itsTakeEvenMean, itsInPlace); }
170 : itsFraction(fraction), itsSorted(sorted), itsInPlace(inPlace) {}
173 {
return fractile(arr, itsFraction, itsSorted, itsInPlace); }
186 const MArrayFunctorBase<T>& funcObj)
189 partialArrayMath (res, a, collapseAxes, funcObj);
192 template<
typename T,
typename RES>
196 const MArrayFunctorBase<T,RES>& funcObj)
228 RES* data = res.
array().data();
231 if (allTrue(miter.
array())) {
241 res.setMask (resMask);
249 const MArrayFunctorBase<T>& funcObj)
255 template<
typename T,
typename RES>
259 const MArrayFunctorBase<T,RES>& funcObj)
268 RES* data = res.
array().data();
275 if (allTrue(subMask)) {
283 for (ax=0; ax<
ndim; ++ax) {
284 blc[ax] += fullBoxShape[ax];
285 if (blc[ax] <
shape[ax]) {
286 trc[ax] += fullBoxShape[ax];
287 if (trc[ax] >=
shape[ax]) {
288 trc[ax] =
shape[ax]-1;
293 trc[ax] = fullBoxShape[ax]-1;
299 res.setMask (resMask);
302 template <
typename T>
305 const MArrayFunctorBase<T>& funcObj,
312 template <
typename T,
typename RES>
316 const MArrayFunctorBase<T,RES>& funcObj,
337 resa.
reference (resa(boxEnd2, resShape+boxEnd2-1));
338 resm.
reference (resm(boxEnd2, resShape+boxEnd2-1));
348 if (allTrue(subMask)) {
358 for (ax=0; ax<
ndim; ++ax) {
359 if (++pos[ax] < resShape[ax]) {
366 trc[ax] = boxEnd[ax];
380 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
382 left.combineMask(right))); }
386 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
388 left.combineMask(right))); }
392 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
394 left.combineMask(right))); }
398 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
400 left.combineMask(right))); }
404 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
406 left.combineMask(right))); }
410 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
412 left.combineMask(right))); }
416 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
418 left.combineMask(right))); }
422 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
424 left.combineMask(right))); }
541 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
543 left.combineMask(right))); }
581 a.combineMask(
exp))); }
593 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
595 left.combineMask(right))); }
607 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
609 left.combineMask(right))); }
645 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
647 left.combineMask(right))); }
659 {
return (left.isNull() || right.isNull() ?
MArray<T>() :
661 left.combineMask(right))); }
708 return a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
709 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
710 a.mask().cbegin(), T(), std::plus<T>()) :
711 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
712 a.mask().begin(), T(), std::plus<T>());
721 return a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
722 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
724 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
727 return sumsqr(a.
array());
734 return a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
735 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
736 a.mask().cbegin(), std::multiplies<T>()) :
737 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
738 a.mask().begin(), std::multiplies<T>());
747 return a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
748 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
749 a.mask().cbegin(),
Min<T>()) :
750 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
751 a.mask().begin(),
Min<T>());
760 return a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
761 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
762 a.mask().cbegin(),
Max<T>()) :
763 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
764 a.mask().begin(),
Max<T>());
772 Int64 nv = a.nvalid();
773 if (nv == 0)
return T();
774 if (! a.hasMask())
return mean(a.
array());
775 return T(
sum(a) / (1.0*nv));
781 Int64 nv = a.nvalid();
782 if (nv < ddof+1)
return T();
783 if (! a.hasMask())
return pvariance(a.
array(),
mean, ddof);
784 T
sum = a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
785 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
787 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
789 return T(
sum / (1.0*nv - ddof));
813 Int64 nv = a.nvalid();
814 if (nv == 0)
return T();
816 T
sum = a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
817 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
819 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
821 return T(
sum / (1.0*nv));
833 Int64 nv = a.nvalid();
834 if (nv == 0)
return T();
835 if (! a.hasMask())
return rms(a.
array());
836 T
sum = a.
array().contiguousStorage() && a.mask().contiguousStorage() ?
837 accumulateMasked<T>(a.
array().cbegin(), a.
array().cend(),
839 accumulateMasked<T>(a.
array().begin(), a.
array().end(),
841 return T(
sqrt(
sum / (1.0*nv)));
849 if (a.empty())
return T();
850 if (! a.hasMask())
return median(a.
array(), sorted, takeEvenMean, inPlace);
853 if (nv == 0)
return T();
856 return median (arr, sorted, takeEvenMean,
True);
863 {
return median (a, sorted, (a.nelements() <= 100),
False); }
866 {
return median (a, sorted, (a.nelements() <= 100),
True); }
878 if (a.empty())
return T();
879 if (! a.hasMask())
return fractile(a.
array(), fraction, sorted, inPlace);
882 if (nv == 0)
return T();
896 }
else if (! a.hasMask()) {
899 return partialArrayMath (a, collapseAxes,
MSumFunc<T>());
907 }
else if (! a.hasMask()) {
919 }
else if (! a.hasMask()) {
930 }
else if (! a.hasMask()) {
933 return partialArrayMath (a, collapseAxes,
MMinFunc<T>());
941 }
else if (! a.hasMask()) {
944 return partialArrayMath (a, collapseAxes,
MMaxFunc<T>());
952 }
else if (! a.hasMask()) {
955 return partialArrayMath (a, collapseAxes,
MMeanFunc<T>());
964 }
else if (! a.hasMask()) {
965 return MArray<T>(partialVariances (a.
array(), collapseAxes, ddof));
976 }
else if (! a.hasMask()) {
987 }
else if (! a.hasMask()) {
998 }
else if (! a.hasMask()) {
1001 return partialArrayMath (a, collapseAxes,
MRmsFunc<T>());
1003 template<
typename T>
1011 }
else if (! a.hasMask()) {
1013 takeEvenMean, inPlace));
1015 return partialArrayMath (a, collapseAxes,
1018 template<
typename T>
1026 }
else if (! a.hasMask()) {
1028 fraction, inPlace));
1030 return partialArrayMath (a, collapseAxes,
1037 template<
typename T>
1043 }
else if (! a.hasMask()) {
1045 SumFunc<T>(), fillEdge));
1049 template<
typename T>
1055 }
else if (! a.hasMask()) {
1057 SumSqrFunc<T>(), fillEdge));
1061 template<
typename T>
1067 }
else if (! a.hasMask()) {
1069 ProductFunc<T>(), fillEdge));
1073 template<
typename T>
1079 }
else if (! a.hasMask()) {
1081 MinFunc<T>(), fillEdge));
1085 template<
typename T>
1091 }
else if (! a.hasMask()) {
1093 MaxFunc<T>(), fillEdge));
1097 template<
typename T>
1103 }
else if (! a.hasMask()) {
1105 MeanFunc<T>(), fillEdge));
1109 template<
typename T>
1117 }
else if (! a.hasMask()) {
1119 VarianceFunc<T>(ddof), fillEdge));
1123 template<
typename T>
1131 }
else if (! a.hasMask()) {
1133 StddevFunc<T>(ddof), fillEdge));
1137 template<
typename T>
1143 }
else if (! a.hasMask()) {
1145 AvdevFunc<T>(), fillEdge));
1149 template<
typename T>
1155 }
else if (! a.hasMask()) {
1157 RmsFunc<T>(), fillEdge));
1161 template<
typename T>
1170 }
else if (! a.hasMask()) {
1172 MedianFunc<T>(
False, takeEvenMean,
1180 template<
typename T>
1189 }
else if (! a.hasMask()) {
1191 FractileFunc<T>(fraction,
False,
1203 template<
typename T>
1209 }
else if (! a.hasMask()) {
1214 template<
typename T>
1220 }
else if (! a.hasMask()) {
1225 template<
typename T>
1231 }
else if (! a.hasMask()) {
1236 template<
typename T>
1242 }
else if (! a.hasMask()) {
1247 template<
typename T>
1253 }
else if (! a.hasMask()) {
1258 template<
typename T>
1264 }
else if (! a.hasMask()) {
1269 template<
typename T>
1276 }
else if (! a.hasMask()) {
1281 template<
typename T>
1288 }
else if (! a.hasMask()) {
1293 template<
typename T>
1299 }
else if (! a.hasMask()) {
1304 template<
typename T>
1310 }
else if (! a.hasMask()) {
1315 template<
typename T>
1323 }
else if (! a.hasMask()) {
1325 MedianFunc<T>(
False, takeEvenMean,
1331 template<
typename T>
1339 }
else if (! a.hasMask()) {
1341 FractileFunc<T>(fraction,
False,
MFractileFunc(Float fraction, Bool sorted=False, Bool inPlace=False)
MArray< T > slidingVariances(const MArray< T > &a, const IPosition &halfBoxSize, uInt ddof, Bool fillEdge=True)
LatticeExprNode acos(const LatticeExprNode &expr)
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.
LatticeExprNode stddev(const LatticeExprNode &expr)
MArray< T > operator~(const MArray< T > &a)
Take the complement of the elements in an array.
Functor to add absolute diff of right and base value to left.
MArray< T > boxedMaxs(const MArray< T > &a, const IPosition &boxSize)
LatticeExprNode operator+(const LatticeExprNode &expr)
Global functions operating on a LatticeExprNode.
MArray< Double > phase(const MArray< DComplex > &arr)
MArray< T > slidingStddevs(const MArray< T > &a, const IPosition &halfBoxSize, uInt ddof, Bool fillEdge=True)
MArray< Float > phase(const MArray< Complex > &arr)
Functor to get maximum of two values.
MArray< T > min(const MArray< T > &left, const T &right)
Functor to add square of right to left.
void boxedArrayMath(MArray< RES > &res, const MArray< T > &array, const IPosition &boxShape, const MArrayFunctorBase< T, RES > &funcObj)
LatticeExprNode variance(const LatticeExprNode &expr)
MArray< T > partialFractiles(const MArray< T > &a, const IPosition &collapseAxes, Float fraction, Bool inPlace=False)
T operator()(const MArray< T > &arr) const
T avdev(const MArray< T > &a, T mean)
MArray< T > slidingMedians(const MArray< T > &a, const IPosition &halfBoxSize, Bool takeEvenMean=False, Bool inPlace=False, Bool fillEdge=True)
LatticeExprNode log(const LatticeExprNode &expr)
T sum(const MArray< T > &a)
Reduce an array to a scalar using the unmasked elements only.
LatticeExprNode real(const LatticeExprNode &expr)
LatticeExprNode log10(const LatticeExprNode &expr)
T stddev(const MArray< T > &a, uInt ddof)
MArray< T > atan2(const MArray< T > &left, const T &right)
T operator()(const MArray< T > &arr) const
LatticeExprNode fmod(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< T > boxedStddevs(const MArray< T > &a, const IPosition &boxSize, uInt ddof)
Bool fillSlidingShape(const IPosition &shape, const IPosition &halfBoxSize, IPosition &boxEnd, IPosition &resultShape)
Determine the box end and shape of result for a sliding operation.
MArray< T > operator%(const MArray< T > &left, const MArray< T > &right)
TableExprNode amplitude(const TableExprNode &node)
The amplitude (i.e.
LatticeExprNode abs(const LatticeExprNode &expr)
Numerical 1-argument functions which result in a real number regardless of input expression type.
LatticeExprNode ndim(const LatticeExprNode &expr)
1-argument function to get the dimensionality of a lattice.
MArray< T > atan2(const MArray< T > &left, const MArray< T > &right)
MArray< T > boxedMins(const MArray< T > &a, const IPosition &boxSize)
T medianInPlace(const MArray< T > &a, Bool sorted=False)
MArray< T > floormod(const T &left, const MArray< T > &right)
MArray< T > partialMins(const MArray< T > &a, const IPosition &collapseAxes)
LatticeExprNode pow(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< T > partialProducts(const MArray< T > &a, const IPosition &collapseAxes)
LatticeExprNode atan(const LatticeExprNode &expr)
MArray< T > min(const T &left, const MArray< T > &right)
Functor to get minimum of two values.
LatticeExprNode conj(const LatticeExprNode &expr)
LatticeExprNode sqrt(const LatticeExprNode &expr)
MArray< T > boxedFractiles(const MArray< T > &a, const IPosition &boxSize, Float fraction, Bool inPlace=False)
virtual void reference(const Array< T > &other)
After invocation, this array and other reference the same storage.
LatticeExprNode mean(const LatticeExprNode &expr)
MArray< T > cube(const MArray< T > &a)
MArray< T > slidingFractiles(const MArray< T > &a, const IPosition &halfBoxSize, Float fraction, Bool inPlace=False, Bool fillEdge=True)
MArray< T > partialVariances(const MArray< T > &a, const IPosition &collapseAxes, uInt ddof)
void partialArrayMath(MArray< RES > &res, const MArray< T > &a, const IPosition &collapseAxes, const MArrayFunctorBase< T, RES > &funcObj)
TableExprNode square(const TableExprNode &node)
LatticeExprNode tan(const LatticeExprNode &expr)
MArray< T > tanh(const MArray< T > &a)
T * data()
Get a pointer to the beginning of the array.
MArray< T > sin(const MArray< T > &a)
Perform mathematical function on each element in an array.
MArray< T > asin(const MArray< T > &a)
T operator()(const MArray< T > &arr) const
T variance(const MArray< T > &a, T mean, uInt ddof)
MArray< T > atan(const MArray< T > &a)
MArray< T > cosh(const MArray< T > &a)
MArray< Float > imag(const MArray< Complex > &arr)
T operator()(const MArray< T > &arr) const
T product(const TableVector< T > &tv)
Vector< T > flatten() const
Flatten the unmasked elements of the array to a vector.
LatticeExprNode cos(const LatticeExprNode &expr)
MArray< T > pow(const MArray< T > &a, const MArray< T > &exp)
T median(const MArray< T > &a, Bool sorted, Bool takeEvenMean, Bool inPlace=False)
MArray< T > fmod(const MArray< T > &left, const MArray< T > &right)
MArray< T > boxedAvdevs(const MArray< T > &a, const IPosition &boxSize)
MArray< T > cos(const MArray< T > &a)
iterator begin()
Get the begin iterator object for any array.
void slidingArrayMath(MArray< RES > &res, const MArray< T > &array, const IPosition &halfBoxShape, const MArrayFunctorBase< T, RES > &funcObj, Bool fillEdge=True)
MVarianceFunc(uInt ddof=0)
MArray< T > abs(const MArray< T > &a)
MArray< T > tan(const MArray< T > &a)
MArray< T > boxedMedians(const MArray< T > &a, const IPosition &boxSize, Bool takeEvenMean=False, Bool inPlace=False)
LatticeExprNode cosh(const LatticeExprNode &expr)
LatticeExprNode max(const LatticeExprNode &left, const LatticeExprNode &right)
LatticeExprNode atan2(const LatticeExprNode &left, const LatticeExprNode &right)
Numerical 2-argument functions.
LatticeExprNode sin(const LatticeExprNode &expr)
Numerical 1-argument functions.
MArray< T > operator&(const MArray< T > &left, const MArray< T > &right)
MArray< T > sign(const MArray< T > &a)
MArray< T > floor(const MArray< T > &a)
MArray< T > slidingMaxs(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
TableExprNode shape(const TableExprNode &array)
Function operating on any scalar or array resulting in a Double array containing the shape.
T variance(const MArray< T > &a, uInt ddof)
TableExprNode cube(const TableExprNode &node)
MArray< T > boxedMeans(const MArray< T > &a, const IPosition &boxSize)
MArray< T > max(const MArray< T > &left, const MArray< T > &right)
T fractile(const MArray< T > &a, Float fraction, Bool sorted=False, Bool inPlace=False)
Return the fractile of an array.
T median(const MArray< T > &a)
MArray< Double > amplitude(const MArray< DComplex > &arr)
MArray< T > partialRmss(const MArray< T > &a, const IPosition &collapseAxes)
LatticeExprNode operator/(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< T > min(const MArray< T > &left, const MArray< T > &right)
MArray< T > partialMedians(const MArray< T > &a, const IPosition &collapseAxes, Bool takeEvenMean=False, Bool inPlace=False)
LatticeExprNode ceil(const LatticeExprNode &expr)
MArray< T > partialArrayMath(const MArray< T > &a, const IPosition &collapseAxes, const MArrayFunctorBase< T > &funcObj)
Do partial reduction of an MArray object.
MArray< T > acos(const MArray< T > &a)
LatticeExprNode min(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< T > max(const T &left, const MArray< T > &right)
MArray< T > operator+(const MArray< T > &left, const MArray< T > &right)
Add, subtract, etc.
MArray< T > fmod(const MArray< T > &left, const T &right)
void next()
Move the cursor to the next position.
MArray< T > slidingProducts(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
T max(const MArray< T > &a)
MArray< T > boxedProducts(const MArray< T > &a, const IPosition &boxSize)
MArray< T > log(const MArray< T > &a)
MArray< T > boxedArrayMath(const MArray< T > &a, const IPosition &boxShape, const MArrayFunctorBase< T > &funcObj)
T sumsqr(const MArray< T > &a)
LatticeExprNode asin(const LatticeExprNode &expr)
this file contains all the compiler specific defines
MArray< T > sqrt(const MArray< T > &a)
MArray< T > boxedVariances(const MArray< T > &a, const IPosition &boxSize, uInt ddof)
MArray< Float > amplitude(const MArray< Complex > &arr)
#define AlwaysAssert(expr, exception)
These marcos are provided for use instead of simply using the constructors of assert_ to allow additi...
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
MArray< T > operator/(const MArray< T > &left, const MArray< T > &right)
MArray< Double > real(const MArray< DComplex > &arr)
const Array< T > & array() const
Get access to the array.
LatticeExprNode median(const LatticeExprNode &expr)
LatticeExprNode imag(const LatticeExprNode &expr)
T rms(const MArray< T > &a)
MArray< T > square(const MArray< T > &a)
MArray< T > operator|(const MArray< T > &left, const MArray< T > &right)
MArray< T > operator^(const MArray< T > &left, const MArray< T > &right)
TableExprNode phase(const TableExprNode &node)
The phase (i.e.
T operator()(const MArray< T > &arr) const
MArray< T > partialStddevs(const MArray< T > &a, const IPosition &collapseAxes, uInt ddof)
Iterate a const Array cursor through a const Array.
MArray< T > slidingMins(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Define functors to perform a reduction function on an MArray object.
const Array< T > & array()
Return the cursor.
MArray< T > operator-(const MArray< T > &left, const MArray< T > &right)
LatticeExprNode operator%(const LatticeExprNode &left, const LatticeExprNode &right)
Functor to add squared diff of right and base value to left.
T min(const MArray< T > &a)
MArray< T > log10(const MArray< T > &a)
MArray< T > exp(const MArray< T > &a)
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
MArray< T > slidingSumSqrs(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
LatticeExprNode mask(const LatticeExprNode &expr)
This function returns the mask of the given expression.
@ SHARE
Share means that the Array will just use the pointer (no copy), however the Array will NOT delete it ...
MArray< T > partialSums(const MArray< T > &a, const IPosition &collapseAxes)
Get partial sums, etc.
MArray< T > max(const MArray< T > &left, const T &right)
MArray< T > slidingMeans(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
LatticeExprNode operator^(const LatticeExprNode &left, const LatticeExprNode &right)
T operator()(const MArray< T > &arr) const
T stddev(const MArray< T > &a, T mean, uInt ddof)
T avdev(const MArray< T > &a)
MArray< T > floormod(const MArray< T > &left, const MArray< T > &right)
MArray< T > partialAvdevs(const MArray< T > &a, const IPosition &collapseAxes)
LatticeExprNode tanh(const LatticeExprNode &expr)
LatticeExprNode sum(const LatticeExprNode &expr)
MArray< T > boxedSumSqrs(const MArray< T > &a, const IPosition &boxSize)
MArray< T > ceil(const MArray< T > &a)
LatticeExprNode floor(const LatticeExprNode &expr)
bool Bool
Define the standard types used by Casacore.
MArray< T > fmod(const T &left, const MArray< T > &right)
MArray< T > slidingAvdevs(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
T operator()(const MArray< T > &arr) const
MArray< T > boxedSums(const MArray< T > &a, const IPosition &boxSize)
Get boxed sums.
T operator()(const MArray< T > &arr) const
TableExprNode rms(const TableExprNode &array)
T product(const MArray< T > &a)
MArray< T > operator*(const MArray< T > &left, const MArray< T > &right)
T * storage()
If you really, really, need a "raw" pointer to the beginning of the storage area this will give it to...
MArray< T > round(const MArray< T > &a)
MArray< Double > imag(const MArray< DComplex > &arr)
MArray< T > slidingArrayMath(const MArray< T > &array, const IPosition &halfBoxShape, const MArrayFunctorBase< T > &funcObj, Bool fillEdge=True)
void resize(const IPosition &shape, Bool useMask)
Resize the array and optionally the mask.
LatticeExprNode avdev(const LatticeExprNode &expr)
LatticeExprNode sign(const LatticeExprNode &expr)
MArray< T > partialMeans(const MArray< T > &a, const IPosition &collapseAxes)
MVBaseline operator*(const RotMatrix &left, const MVBaseline &right)
Rotate a Baseline vector with rotation matrix and other multiplications.
MArray< T > floormod(const MArray< T > &left, const T &right)
MArray< T > conj(const MArray< T > &arr)
TableExprNode operator|(const TableExprNode &left, const TableExprNode &right)
MArray< T > sinh(const MArray< T > &a)
LatticeExprNode round(const LatticeExprNode &expr)
LatticeExprNode sinh(const LatticeExprNode &expr)
TableExprNode operator&(const TableExprNode &left, const TableExprNode &right)
MArray< T > fabs(const MArray< T > &a)
LatticeExprNode operator-(const LatticeExprNode &expr)
LatticeExprNode exp(const LatticeExprNode &expr)
MArray< T > slidingRmss(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
MArray< Float > real(const MArray< Complex > &arr)
MArray< T > pow(const MArray< T > &a, const Double &exp)
T operator()(const MArray< T > &arr) const
MArray< T > partialMaxs(const MArray< T > &a, const IPosition &collapseAxes)
T operator()(const MArray< T > &arr) const
MArray< T > slidingSums(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding sums.
MArray< T > pow(const T &a, const MArray< T > &exp)
MArray< T > partialSumSqrs(const MArray< T > &a, const IPosition &collapseAxes)
T mean(const MArray< T > &a)
void fillBoxedShape(const IPosition &shape, const IPosition &boxShape, IPosition &fullBoxShape, IPosition &resultShape)
Helper functions for boxed and sliding functions.
MArray< T > boxedRmss(const MArray< T > &a, const IPosition &boxSize)
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...
T median(const MArray< T > &a, Bool sorted)
MArray< T > atan2(const T &left, const MArray< T > &right)
T operator()(const MArray< T > &arr) const
LatticeExprNode fractile(const LatticeExprNode &expr, const LatticeExprNode &fraction)
Determine the value of the element at the part fraction from the beginning of the given lattice.