# HG changeset patch # User Jaroslav Hajek # Date 1267174074 -3600 # Node ID b47ab50a6aa852d994f19ce1df03c74fc683bf09 # Parent b4f67ca318d825d8980ef320a6ed700d437e19df simplify appliers in mx-inlines.cc diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/CMatrix.cc --- a/liboctave/CMatrix.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/CMatrix.cc Fri Feb 26 09:47:54 2010 +0100 @@ -3069,7 +3069,7 @@ boolMatrix ComplexMatrix::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } // other operations @@ -3202,43 +3202,43 @@ boolMatrix ComplexMatrix::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolMatrix ComplexMatrix::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } ComplexMatrix ComplexMatrix::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } ComplexMatrix ComplexMatrix::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } ComplexMatrix ComplexMatrix::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } ComplexMatrix ComplexMatrix::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } ComplexMatrix ComplexMatrix::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } Matrix ComplexMatrix::abs (void) const diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/CNDArray.cc --- a/liboctave/CNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/CNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -500,7 +500,7 @@ boolNDArray ComplexNDArray::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } // FIXME -- this is not quite the right thing. @@ -620,55 +620,55 @@ boolNDArray ComplexNDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolNDArray ComplexNDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } ComplexNDArray ComplexNDArray::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } ComplexNDArray ComplexNDArray::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } ComplexNDArray ComplexNDArray::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } ComplexNDArray ComplexNDArray::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } ComplexNDArray ComplexNDArray::xsum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_xsum); + return do_mx_red_op (*this, dim, mx_inline_xsum); } ComplexNDArray ComplexNDArray::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } ComplexNDArray ComplexNDArray::diff (octave_idx_type order, int dim) const { - return do_mx_diff_op (*this, dim, order, mx_inline_diff); + return do_mx_diff_op (*this, dim, order, mx_inline_diff); } ComplexNDArray @@ -702,79 +702,79 @@ ComplexNDArray ComplexNDArray::max (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_max); + return do_mx_minmax_op (*this, dim, mx_inline_max); } ComplexNDArray ComplexNDArray::max (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); } ComplexNDArray ComplexNDArray::min (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_min); + return do_mx_minmax_op (*this, dim, mx_inline_min); } ComplexNDArray ComplexNDArray::min (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); } ComplexNDArray ComplexNDArray::cummax (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); } ComplexNDArray ComplexNDArray::cummax (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); } ComplexNDArray ComplexNDArray::cummin (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); } ComplexNDArray ComplexNDArray::cummin (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); } NDArray ComplexNDArray::abs (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray ComplexNDArray::isnan (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray ComplexNDArray::isinf (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray ComplexNDArray::isfinite (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } ComplexNDArray conj (const ComplexNDArray& a) { - return do_mx_unary_map (a); + return do_mx_unary_map (a); } ComplexNDArray& @@ -930,7 +930,7 @@ if (a.is_shared ()) a = a * s; else - do_ms_inplace_op (a, s, mx_inline_mul2); + do_ms_inplace_op (a, s, mx_inline_mul2); return a; } @@ -939,7 +939,7 @@ if (a.is_shared ()) return a = a / s; else - do_ms_inplace_op (a, s, mx_inline_div2); + do_ms_inplace_op (a, s, mx_inline_div2); return a; } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/ChangeLog --- a/liboctave/ChangeLog Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/ChangeLog Fri Feb 26 09:47:54 2010 +0100 @@ -1,3 +1,30 @@ +2010-02-26 Jaroslav Hajek + + * mx-inlines.cc: Parameterize all appliers by value types rather than + Array types. Return & accept Array instances. + * mx-op-defs.h: Update references. + * CMatrix.cc: Ditto. + * CNDArray.cc: Ditto. + * DiagArray2.h: Ditto. + * MArray.cc: Ditto. + * boolMatrix.cc: Ditto. + * boolNDArray.cc: Ditto. + * bsxfun-defs.cc: Ditto. + * chMatrix.cc: Ditto. + * chNDArray.cc: Ditto. + * dMatrix.cc: Ditto. + * dNDArray.cc: Ditto. + * fCMatrix.cc: Ditto. + * fCNDArray.cc: Ditto. + * fMatrix.cc: Ditto. + * fNDArray.cc: Ditto. + * intNDArray.cc: Ditto. + * MDiagArray2.cc: Remove computed assignment operators, adapt + operators to new mechanism. + * MDiagArray2.h: Declare operators as friends. + * MArray-decl.h (MDIAGARRAY2_OPS_FRIEND_DECLS): Don't expand + MARRAY_OP_ASSIGN_FRIENDS here. + 2010-02-25 John W. Eaton * eigs-base.cc: Use octave_idx_type for Fortran LOGICAL values diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/DiagArray2.h --- a/liboctave/DiagArray2.h Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/DiagArray2.h Fri Feb 26 09:47:54 2010 +0100 @@ -114,6 +114,9 @@ DiagArray2 (const Array& a) : Array (a.as_column ()), d1 (a.numel ()), d2 (a.numel ()) { } + DiagArray2 (const Array& a, octave_idx_type r, octave_idx_type c) + : Array (a.as_column ()), d1 (r), d2 (c) { } + DiagArray2 (const DiagArray2& a) : Array (a), d1 (a.d1), d2 (a.d2) { } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/MArray-decl.h --- a/liboctave/MArray-decl.h Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/MArray-decl.h Fri Feb 26 09:47:54 2010 +0100 @@ -228,7 +228,6 @@ MARRAY_BINOP_FRIENDS (A_T, API) #define MDIAGARRAY2_OPS_FRIEND_DECLS(A_T, API) \ - MARRAY_OP_ASSIGN_FRIENDS (A_T, A_T, API) \ MARRAY_UNOP_FRIENDS (A_T, API) \ MDIAGARRAY2_BINOP_FRIENDS (A_T, API) diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/MArray.cc --- a/liboctave/MArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/MArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -143,7 +143,7 @@ if (Array::is_shared ()) *this = - *this; else - do_mx_inplace_op > (*this, mx_inline_uminus2); + do_mx_inplace_op (*this, mx_inline_uminus2); } // Element by element MArray by scalar ops. @@ -155,7 +155,7 @@ if (a.is_shared ()) a = a + s; else - do_ms_inplace_op, T> (a, s, mx_inline_add2); + do_ms_inplace_op (a, s, mx_inline_add2); return a; } @@ -166,7 +166,7 @@ if (a.is_shared ()) a = a - s; else - do_ms_inplace_op, T> (a, s, mx_inline_sub2); + do_ms_inplace_op (a, s, mx_inline_sub2); return a; } @@ -177,7 +177,7 @@ if (a.is_shared ()) a = a * s; else - do_ms_inplace_op, T> (a, s, mx_inline_mul2); + do_ms_inplace_op (a, s, mx_inline_mul2); return a; } @@ -188,7 +188,7 @@ if (a.is_shared ()) a = a / s; else - do_ms_inplace_op, T> (a, s, mx_inline_div2); + do_ms_inplace_op (a, s, mx_inline_div2); return a; } @@ -201,7 +201,7 @@ if (a.is_shared ()) a = a + b; else - do_mm_inplace_op, MArray > (a, b, mx_inline_add2, "+="); + do_mm_inplace_op (a, b, mx_inline_add2, "+="); return a; } @@ -212,7 +212,7 @@ if (a.is_shared ()) a = a - b; else - do_mm_inplace_op, MArray > (a, b, mx_inline_sub2, "-="); + do_mm_inplace_op (a, b, mx_inline_sub2, "-="); return a; } @@ -224,7 +224,7 @@ if (a.is_shared ()) return a = product (a, b); else - do_mm_inplace_op, MArray > (a, b, mx_inline_mul2, ".*="); + do_mm_inplace_op (a, b, mx_inline_mul2, ".*="); return a; } @@ -235,7 +235,7 @@ if (a.is_shared ()) return a = quotient (a, b); else - do_mm_inplace_op, MArray > (a, b, mx_inline_div2, "./="); + do_mm_inplace_op (a, b, mx_inline_div2, "./="); return a; } @@ -246,7 +246,7 @@ MArray \ operator OP (const MArray& a, const T& s) \ { \ - return do_ms_binary_op, MArray, T> (a, s, FN); \ + return do_ms_binary_op (a, s, FN); \ } MARRAY_NDS_OP (+, mx_inline_add) @@ -261,7 +261,7 @@ MArray \ operator OP (const T& s, const MArray& a) \ { \ - return do_sm_binary_op, T, MArray > (s, a, FN); \ + return do_sm_binary_op (s, a, FN); \ } MARRAY_SND_OP (+, mx_inline_add) @@ -276,7 +276,7 @@ MArray \ FCN (const MArray& a, const MArray& b) \ { \ - return do_mm_binary_op, MArray, MArray > (a, b, FN, #FCN); \ + return do_mm_binary_op (a, b, FN, #FCN); \ } MARRAY_NDND_OP (operator +, +, mx_inline_add) @@ -295,5 +295,5 @@ MArray operator - (const MArray& a) { - return do_mx_unary_op, MArray > (a, mx_inline_uminus); + return do_mx_unary_op (a, mx_inline_uminus); } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/MDiagArray2.cc --- a/liboctave/MDiagArray2.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/MDiagArray2.cc Fri Feb 26 09:47:54 2010 +0100 @@ -51,29 +51,6 @@ // Element by element MDiagArray2 by MDiagArray2 ops. -template -MDiagArray2& -operator += (MDiagArray2& a, const MDiagArray2& b) -{ - if (a.is_shared ()) - a = a + b; - else - do_mm_inplace_op, MDiagArray2 > (a, b, mx_inline_add2, "+="); - return a; -} - -template -MDiagArray2& -operator -= (MDiagArray2& a, const MDiagArray2& b) -{ - if (a.is_shared ()) - a = a - b; - else - do_mm_inplace_op, MDiagArray2 > (a, b, mx_inline_sub2, "-="); - return a; -} - - // Element by element MDiagArray2 by scalar ops. #define MARRAY_DAS_OP(OP, FN) \ @@ -81,7 +58,7 @@ MDiagArray2 \ operator OP (const MDiagArray2& a, const T& s) \ { \ - return do_ms_binary_op, MDiagArray2, T> (a, s, FN); \ + return MDiagArray2 (do_ms_binary_op (a, s, FN), a.d1, a.d2); \ } MARRAY_DAS_OP (*, mx_inline_mul) @@ -93,7 +70,7 @@ MDiagArray2 operator * (const T& s, const MDiagArray2& a) { - return do_sm_binary_op, T, MDiagArray2 > (s, a, mx_inline_mul); + return MDiagArray2 (do_sm_binary_op (s, a, mx_inline_mul), a.d1, a.d2); } // Element by element MDiagArray2 by MDiagArray2 ops. @@ -103,7 +80,9 @@ MDiagArray2 \ FCN (const MDiagArray2& a, const MDiagArray2& b) \ { \ - return do_mm_binary_op, MDiagArray2, MDiagArray2 > (a, b, FN, #FCN); \ + if (a.d1 != b.d1 || a.d2 != b.d2) \ + gripe_nonconformant (#FCN, a.d1, a.d2, b.d1, b.d2); \ + return MDiagArray2 (do_mm_binary_op (a, b, FN, #FCN), a.d1, a.d2); \ } MARRAY_DADA_OP (operator +, +, mx_inline_add) @@ -123,5 +102,5 @@ MDiagArray2 operator - (const MDiagArray2& a) { - return do_mx_unary_op, MDiagArray2 > (a, mx_inline_uminus); + return MDiagArray2 (do_mx_unary_op (a, mx_inline_uminus), a.d1, a.d2); } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/MDiagArray2.h --- a/liboctave/MDiagArray2.h Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/MDiagArray2.h Fri Feb 26 09:47:54 2010 +0100 @@ -63,6 +63,9 @@ explicit MDiagArray2 (const Array& a) : DiagArray2 (a) { } + MDiagArray2 (const Array& a, octave_idx_type r, octave_idx_type c) + : DiagArray2 (a, r, c) { } + ~MDiagArray2 (void) { } MDiagArray2& operator = (const MDiagArray2& a) @@ -104,7 +107,7 @@ // Currently, the OPS functions don't need to be friends, but that // may change. - // MDIAGARRAY2_OPS_FRIEND_DECLS (MDiagArray2) + MDIAGARRAY2_OPS_FRIEND_DECLS (MDiagArray2, ) }; diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/boolMatrix.cc --- a/liboctave/boolMatrix.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/boolMatrix.cc Fri Feb 26 09:47:54 2010 +0100 @@ -91,13 +91,13 @@ boolMatrix boolMatrix::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolMatrix boolMatrix::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } MM_BOOL_OPS (boolMatrix, boolMatrix) diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/boolNDArray.cc --- a/liboctave/boolNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/boolNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -41,7 +41,7 @@ boolNDArray boolNDArray::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } boolNDArray& @@ -50,7 +50,7 @@ if (is_shared ()) *this = ! *this; else - do_mx_inplace_op (*this, mx_inline_not2); + do_mx_inplace_op (*this, mx_inline_not2); return *this; } @@ -60,13 +60,13 @@ boolNDArray boolNDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolNDArray boolNDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } NDArray @@ -74,14 +74,14 @@ { // NOTE: going via octave_idx_type is typically faster even though it // requires a conversion. - return do_mx_red_op , bool> (*this, dim, mx_inline_count); + return do_mx_red_op (*this, dim, mx_inline_count); } NDArray boolNDArray::cumsum (int dim) const { // In this case, it's better to sum directly to doubles. - return do_mx_cum_op (*this, dim, mx_inline_cumcount); + return do_mx_cum_op (*this, dim, mx_inline_cumcount); } boolNDArray @@ -150,7 +150,7 @@ if (a.is_shared ()) a = mx_el_and (a, b); else - do_mm_inplace_op (a, b, mx_inline_and2, "operator &="); + do_mm_inplace_op (a, b, mx_inline_and2, "operator &="); return a; } @@ -161,7 +161,7 @@ if (a.is_shared ()) a = mx_el_or (a, b); else - do_mm_inplace_op (a, b, mx_inline_or2, "operator |="); + do_mm_inplace_op (a, b, mx_inline_or2, "operator |="); return a; } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/bsxfun-defs.cc --- a/liboctave/bsxfun-defs.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/bsxfun-defs.cc Fri Feb 26 09:47:54 2010 +0100 @@ -33,18 +33,12 @@ #include "mx-inlines.cc" -template -RNDA -do_bsxfun_op (const XNDA& x, const YNDA& y, - void (*op_vv) (size_t, typename RNDA::element_type *, - const typename XNDA::element_type *, - const typename YNDA::element_type *), - void (*op_sv) (size_t, typename RNDA::element_type *, - typename XNDA::element_type, - const typename YNDA::element_type *), - void (*op_vs) (size_t, typename RNDA::element_type *, - const typename XNDA::element_type *, - typename YNDA::element_type)) +template +Array +do_bsxfun_op (const Array& x, const Array& y, + void (*op_vv) (size_t, R *, const X *, const Y *), + void (*op_sv) (size_t, R *, X, const Y *), + void (*op_vs) (size_t, R *, const X *, Y)) { int nd = std::max (x.ndims (), y.ndims ()); dim_vector dvx = x.dims ().redim (nd), dvy = y.dims ().redim (nd); @@ -68,11 +62,11 @@ } } - RNDA retval (dvr); + Array retval (dvr); - const typename XNDA::element_type *xvec = x.fortran_vec (); - const typename YNDA::element_type *yvec = y.fortran_vec (); - typename RNDA::element_type *rvec = retval.fortran_vec (); + const X *xvec = x.fortran_vec (); + const Y *yvec = y.fortran_vec (); + R *rvec = retval.fortran_vec (); // Fold the common leading dimensions. int start; @@ -151,15 +145,18 @@ #define BSXFUN_OP_DEF_MXLOOP(OP, ARRAY, LOOP) \ BSXFUN_OP_DEF(OP, ARRAY) \ - { return do_bsxfun_op (x, y, LOOP, LOOP, LOOP); } + { return do_bsxfun_op \ + (x, y, LOOP, LOOP, LOOP); } #define BSXFUN_OP2_DEF_MXLOOP(OP, ARRAY, ARRAY1, ARRAY2, LOOP) \ BSXFUN_OP2_DEF(OP, ARRAY, ARRAY1, ARRAY2) \ - { return do_bsxfun_op (x, y, LOOP, LOOP, LOOP); } + { return do_bsxfun_op \ + (x, y, LOOP, LOOP, LOOP); } #define BSXFUN_REL_DEF_MXLOOP(OP, ARRAY, LOOP) \ BSXFUN_REL_DEF(OP, ARRAY) \ - { return do_bsxfun_op (x, y, LOOP, LOOP, LOOP); } + { return do_bsxfun_op \ + (x, y, LOOP, LOOP, LOOP); } #define BSXFUN_STDOP_DEFS_MXLOOP(ARRAY) \ BSXFUN_OP_DEF_MXLOOP (add, ARRAY, mx_inline_add) \ diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/chMatrix.cc --- a/liboctave/chMatrix.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/chMatrix.cc Fri Feb 26 09:47:54 2010 +0100 @@ -205,13 +205,13 @@ boolMatrix charMatrix::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolMatrix charMatrix::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } MS_CMP_OPS (charMatrix, char) diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/chNDArray.cc --- a/liboctave/chNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/chNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -39,13 +39,13 @@ boolNDArray charNDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolNDArray charNDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } charNDArray diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/dMatrix.cc --- a/liboctave/dMatrix.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/dMatrix.cc Fri Feb 26 09:47:54 2010 +0100 @@ -2609,7 +2609,7 @@ boolMatrix Matrix::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } // column vector by row vector -> matrix operations @@ -2780,43 +2780,43 @@ boolMatrix Matrix::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolMatrix Matrix::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } Matrix Matrix::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } Matrix Matrix::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } Matrix Matrix::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } Matrix Matrix::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } Matrix Matrix::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } Matrix diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/dNDArray.cc --- a/liboctave/dNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/dNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -541,7 +541,7 @@ boolNDArray NDArray::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } bool @@ -706,103 +706,103 @@ boolNDArray NDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolNDArray NDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } NDArray NDArray::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } NDArray NDArray::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } NDArray NDArray::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } NDArray NDArray::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } NDArray NDArray::xsum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_xsum); + return do_mx_red_op (*this, dim, mx_inline_xsum); } NDArray NDArray::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } NDArray NDArray::max (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_max); + return do_mx_minmax_op (*this, dim, mx_inline_max); } NDArray NDArray::max (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); } NDArray NDArray::min (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_min); + return do_mx_minmax_op (*this, dim, mx_inline_min); } NDArray NDArray::min (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); } NDArray NDArray::cummax (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); } NDArray NDArray::cummax (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); } NDArray NDArray::cummin (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); } NDArray NDArray::cummin (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); } NDArray NDArray::diff (octave_idx_type order, int dim) const { - return do_mx_diff_op (*this, dim, order, mx_inline_diff); + return do_mx_diff_op (*this, dim, order, mx_inline_diff); } NDArray @@ -861,13 +861,13 @@ NDArray real (const ComplexNDArray& a) { - return do_mx_unary_op (a, mx_inline_real); + return do_mx_unary_op (a, mx_inline_real); } NDArray imag (const ComplexNDArray& a) { - return do_mx_unary_op (a, mx_inline_imag); + return do_mx_unary_op (a, mx_inline_imag); } NDArray& @@ -887,25 +887,25 @@ NDArray NDArray::abs (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray NDArray::isnan (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray NDArray::isinf (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray NDArray::isfinite (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } Matrix diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/fCMatrix.cc --- a/liboctave/fCMatrix.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/fCMatrix.cc Fri Feb 26 09:47:54 2010 +0100 @@ -3062,7 +3062,7 @@ boolMatrix FloatComplexMatrix::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } // other operations @@ -3195,43 +3195,43 @@ boolMatrix FloatComplexMatrix::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolMatrix FloatComplexMatrix::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } FloatComplexMatrix FloatComplexMatrix::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } FloatComplexMatrix FloatComplexMatrix::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } FloatComplexMatrix FloatComplexMatrix::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } FloatComplexMatrix FloatComplexMatrix::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } FloatComplexMatrix FloatComplexMatrix::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } FloatMatrix FloatComplexMatrix::abs (void) const diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/fCNDArray.cc --- a/liboctave/fCNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/fCNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -495,7 +495,7 @@ boolNDArray FloatComplexNDArray::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } // FIXME -- this is not quite the right thing. @@ -615,55 +615,55 @@ boolNDArray FloatComplexNDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolNDArray FloatComplexNDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } FloatComplexNDArray FloatComplexNDArray::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } FloatComplexNDArray FloatComplexNDArray::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } FloatComplexNDArray FloatComplexNDArray::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } FloatComplexNDArray FloatComplexNDArray::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } ComplexNDArray FloatComplexNDArray::dsum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_dsum); + return do_mx_red_op (*this, dim, mx_inline_dsum); } FloatComplexNDArray FloatComplexNDArray::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } FloatComplexNDArray FloatComplexNDArray::diff (octave_idx_type order, int dim) const { - return do_mx_diff_op (*this, dim, order, mx_inline_diff); + return do_mx_diff_op (*this, dim, order, mx_inline_diff); } FloatComplexNDArray @@ -697,79 +697,79 @@ FloatComplexNDArray FloatComplexNDArray::max (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_max); + return do_mx_minmax_op (*this, dim, mx_inline_max); } FloatComplexNDArray FloatComplexNDArray::max (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); } FloatComplexNDArray FloatComplexNDArray::min (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_min); + return do_mx_minmax_op (*this, dim, mx_inline_min); } FloatComplexNDArray FloatComplexNDArray::min (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); } FloatComplexNDArray FloatComplexNDArray::cummax (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); } FloatComplexNDArray FloatComplexNDArray::cummax (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); } FloatComplexNDArray FloatComplexNDArray::cummin (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); } FloatComplexNDArray FloatComplexNDArray::cummin (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); } FloatNDArray FloatComplexNDArray::abs (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray FloatComplexNDArray::isnan (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray FloatComplexNDArray::isinf (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray FloatComplexNDArray::isfinite (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } FloatComplexNDArray conj (const FloatComplexNDArray& a) { - return do_mx_unary_map (a); + return do_mx_unary_map (a); } FloatComplexNDArray& @@ -925,7 +925,7 @@ if (a.is_shared ()) a = a * s; else - do_ms_inplace_op (a, s, mx_inline_mul2); + do_ms_inplace_op (a, s, mx_inline_mul2); return a; } @@ -934,7 +934,7 @@ if (a.is_shared ()) a = a / s; else - do_ms_inplace_op (a, s, mx_inline_div2); + do_ms_inplace_op (a, s, mx_inline_div2); return a; } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/fMatrix.cc --- a/liboctave/fMatrix.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/fMatrix.cc Fri Feb 26 09:47:54 2010 +0100 @@ -2608,7 +2608,7 @@ boolMatrix FloatMatrix::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } // column vector by row vector -> matrix operations @@ -2779,43 +2779,43 @@ boolMatrix FloatMatrix::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolMatrix FloatMatrix::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } FloatMatrix FloatMatrix::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } FloatMatrix FloatMatrix::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } FloatMatrix FloatMatrix::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } FloatMatrix FloatMatrix::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } FloatMatrix FloatMatrix::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } FloatMatrix diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/fNDArray.cc --- a/liboctave/fNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/fNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -499,7 +499,7 @@ boolNDArray FloatNDArray::operator ! (void) const { - return do_mx_unary_op (*this, mx_inline_not); + return do_mx_unary_op (*this, mx_inline_not); } bool @@ -664,103 +664,103 @@ boolNDArray FloatNDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } boolNDArray FloatNDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } FloatNDArray FloatNDArray::cumprod (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumprod); + return do_mx_cum_op (*this, dim, mx_inline_cumprod); } FloatNDArray FloatNDArray::cumsum (int dim) const { - return do_mx_cum_op (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } FloatNDArray FloatNDArray::prod (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_prod); + return do_mx_red_op (*this, dim, mx_inline_prod); } FloatNDArray FloatNDArray::sum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } NDArray FloatNDArray::dsum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_dsum); + return do_mx_red_op (*this, dim, mx_inline_dsum); } FloatNDArray FloatNDArray::sumsq (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_sumsq); + return do_mx_red_op (*this, dim, mx_inline_sumsq); } FloatNDArray FloatNDArray::max (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_max); + return do_mx_minmax_op (*this, dim, mx_inline_max); } FloatNDArray FloatNDArray::max (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); } FloatNDArray FloatNDArray::min (int dim) const { - return do_mx_minmax_op (*this, dim, mx_inline_min); + return do_mx_minmax_op (*this, dim, mx_inline_min); } FloatNDArray FloatNDArray::min (Array& idx_arg, int dim) const { - return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); } FloatNDArray FloatNDArray::cummax (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); } FloatNDArray FloatNDArray::cummax (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); } FloatNDArray FloatNDArray::cummin (int dim) const { - return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); } FloatNDArray FloatNDArray::cummin (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); } FloatNDArray FloatNDArray::diff (octave_idx_type order, int dim) const { - return do_mx_diff_op (*this, dim, order, mx_inline_diff); + return do_mx_diff_op (*this, dim, order, mx_inline_diff); } FloatNDArray @@ -819,13 +819,13 @@ FloatNDArray real (const FloatComplexNDArray& a) { - return do_mx_unary_op (a, mx_inline_real); + return do_mx_unary_op (a, mx_inline_real); } FloatNDArray imag (const FloatComplexNDArray& a) { - return do_mx_unary_op (a, mx_inline_imag); + return do_mx_unary_op (a, mx_inline_imag); } FloatNDArray& @@ -845,25 +845,25 @@ FloatNDArray FloatNDArray::abs (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray FloatNDArray::isnan (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray FloatNDArray::isinf (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } boolNDArray FloatNDArray::isfinite (void) const { - return do_mx_unary_map (*this); + return do_mx_unary_map (*this); } FloatMatrix diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/intNDArray.cc --- a/liboctave/intNDArray.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/intNDArray.cc Fri Feb 26 09:47:54 2010 +0100 @@ -75,14 +75,14 @@ boolNDArray intNDArray::all (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_all); + return do_mx_red_op (*this, dim, mx_inline_all); } template boolNDArray intNDArray::any (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_any); + return do_mx_red_op (*this, dim, mx_inline_any); } template @@ -205,82 +205,82 @@ intNDArray intNDArray::sum (int dim) const { - return do_mx_red_op , T > (*this, dim, mx_inline_sum); + return do_mx_red_op (*this, dim, mx_inline_sum); } template NDArray intNDArray::dsum (int dim) const { - return do_mx_red_op (*this, dim, mx_inline_dsum); + return do_mx_red_op (*this, dim, mx_inline_dsum); } template intNDArray intNDArray::cumsum (int dim) const { - return do_mx_cum_op , T > (*this, dim, mx_inline_cumsum); + return do_mx_cum_op (*this, dim, mx_inline_cumsum); } template intNDArray intNDArray::max (int dim) const { - return do_mx_minmax_op > (*this, dim, mx_inline_max); + return do_mx_minmax_op (*this, dim, mx_inline_max); } template intNDArray intNDArray::max (Array& idx_arg, int dim) const { - return do_mx_minmax_op > (*this, idx_arg, dim, mx_inline_max); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_max); } template intNDArray intNDArray::min (int dim) const { - return do_mx_minmax_op > (*this, dim, mx_inline_min); + return do_mx_minmax_op (*this, dim, mx_inline_min); } template intNDArray intNDArray::min (Array& idx_arg, int dim) const { - return do_mx_minmax_op > (*this, idx_arg, dim, mx_inline_min); + return do_mx_minmax_op (*this, idx_arg, dim, mx_inline_min); } template intNDArray intNDArray::cummax (int dim) const { - return do_mx_cumminmax_op > (*this, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummax); } template intNDArray intNDArray::cummax (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op > (*this, idx_arg, dim, mx_inline_cummax); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummax); } template intNDArray intNDArray::cummin (int dim) const { - return do_mx_cumminmax_op > (*this, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, dim, mx_inline_cummin); } template intNDArray intNDArray::cummin (Array& idx_arg, int dim) const { - return do_mx_cumminmax_op > (*this, idx_arg, dim, mx_inline_cummin); + return do_mx_cumminmax_op (*this, idx_arg, dim, mx_inline_cummin); } template intNDArray intNDArray::diff (octave_idx_type order, int dim) const { - return do_mx_diff_op > (*this, dim, order, mx_inline_diff); + return do_mx_diff_op (*this, dim, order, mx_inline_diff); } diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/mx-inlines.cc --- a/liboctave/mx-inlines.cc Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/mx-inlines.cc Fri Feb 26 09:47:54 2010 +0100 @@ -35,7 +35,7 @@ #include "oct-cmplx.h" #include "oct-locbuf.h" #include "oct-inttypes.h" -#include "Array-util.h" +#include "Array.h" #include "Array-util.h" // Provides some commonly repeated, basic loop templates. @@ -298,93 +298,86 @@ // Appliers. Since these call the operation just once, we pass it as // a pointer, to allow the compiler reduce number of instances. -#define AELEMT(ARRAY) typename ARRAY::element_type -template -inline RNDA -do_mx_unary_op (const XNDA& x, - void (*op) (size_t, AELEMT(RNDA) *, - const AELEMT(XNDA) *)) +template +inline Array +do_mx_unary_op (const Array& x, + void (*op) (size_t, R *, const X *)) { - RNDA r (x.dims ()); - op (r.length (), r.fortran_vec (), x.data ()); + Array r (x.dims ()); + op (r.numel (), r.fortran_vec (), x.data ()); return r; } // Shortcuts for applying mx_inline_map. -template -inline RNDA -do_mx_unary_map (const XNDA& x) +template +inline Array +do_mx_unary_map (const Array& x) { - return do_mx_unary_op (x, mx_inline_map); + return do_mx_unary_op (x, mx_inline_map); } -template -inline RNDA -do_mx_unary_map (const XNDA& x) +template +inline Array +do_mx_unary_map (const Array& x) { - return do_mx_unary_op (x, mx_inline_map); + return do_mx_unary_op (x, mx_inline_map); } -template -inline RNDA& -do_mx_inplace_op (RNDA& r, - void (*op) (size_t, AELEMT(RNDA) *)) +template +inline Array& +do_mx_inplace_op (Array& r, + void (*op) (size_t, R *)) { op (r.numel (), r.fortran_vec ()); return r; } -template -inline RNDA -do_mm_binary_op (const XNDA& x, const YNDA& y, - void (*op) (size_t, AELEMT(RNDA) *, - const AELEMT(XNDA) *, - const AELEMT(YNDA) *), +template +inline Array +do_mm_binary_op (const Array& x, const Array& y, + void (*op) (size_t, R *, const X *, const Y *), const char *opname) { dim_vector dx = x.dims (), dy = y.dims (); if (dx == dy) { - RNDA r (dx); + Array r (dx); op (r.length (), r.fortran_vec (), x.data (), y.data ()); return r; } else { gripe_nonconformant (opname, dx, dy); - return RNDA (); + return Array (); } } -template -inline RNDA -do_ms_binary_op (const XNDA& x, const YS& y, - void (*op) (size_t, AELEMT(RNDA) *, - const AELEMT(XNDA) *, YS)) +template +inline Array +do_ms_binary_op (const Array& x, const Y& y, + void (*op) (size_t, R *, const X *, Y)) { - RNDA r (x.dims ()); + Array r (x.dims ()); op (r.length (), r.fortran_vec (), x.data (), y); return r; } -template -inline RNDA -do_sm_binary_op (const XS& x, const YNDA& y, - void (*op) (size_t, AELEMT(RNDA) *, XS, - const AELEMT(YNDA) *)) +template +inline Array +do_sm_binary_op (const X& x, const Array& y, + void (*op) (size_t, R *, X, const Y *)) { - RNDA r (y.dims ()); + Array r (y.dims ()); op (r.length (), r.fortran_vec (), x, y.data ()); return r; } -template -inline RNDA& -do_mm_inplace_op (RNDA& r, const XNDA& x, - void (*op) (size_t, AELEMT(RNDA) *, - const AELEMT(XNDA) *), +template +inline Array& +do_mm_inplace_op (Array& r, const Array& x, + void (*op) (size_t, R *, const X *), const char *opname) { dim_vector dr = r.dims (), dx = x.dims (); @@ -395,10 +388,10 @@ return r; } -template -inline RNDA& -do_ms_inplace_op (RNDA& r, const XS& x, - void (*op) (size_t, AELEMT(RNDA) *, XS)) +template +inline Array& +do_ms_inplace_op (Array& r, const X& x, + void (*op) (size_t, R *, X)) { op (r.length (), r.fortran_vec (), x); return r; @@ -1182,11 +1175,11 @@ // FIXME: is this the best design? C++ gives a lot of options here... // maybe it can be done without an explicit parameter? -template -inline ArrayType +template +inline Array do_mx_red_op (const Array& src, int dim, - void (*mx_red_op) (const T *, AELEMT(ArrayType) *, - octave_idx_type, octave_idx_type, octave_idx_type)) + void (*mx_red_op) (const T *, R *, octave_idx_type, + octave_idx_type, octave_idx_type)) { octave_idx_type l, n, u; dim_vector dims = src.dims (); @@ -1200,33 +1193,53 @@ if (dim < dims.length ()) dims(dim) = 1; dims.chop_trailing_singletons (); - ArrayType ret (dims); + Array ret (dims); mx_red_op (src.data (), ret.fortran_vec (), l, n, u); return ret; } -template -inline ArrayType +template +inline Array do_mx_cum_op (const Array& src, int dim, - void (*mx_cum_op) (const T *, AELEMT(ArrayType) *, - octave_idx_type, octave_idx_type, octave_idx_type)) + void (*mx_cum_op) (const T *, R *, octave_idx_type, + octave_idx_type, octave_idx_type)) { octave_idx_type l, n, u; dim_vector dims = src.dims (); get_extent_triplet (dims, dim, l, n, u); // Cumulative operation doesn't reduce the array size. - ArrayType ret (dims); + Array ret (dims); mx_cum_op (src.data (), ret.fortran_vec (), l, n, u); return ret; } -template -inline ArrayType -do_mx_minmax_op (const ArrayType& src, int dim, - void (*mx_minmax_op) (const AELEMT(ArrayType) *, AELEMT(ArrayType) *, +template +inline Array +do_mx_minmax_op (const Array& src, int dim, + void (*mx_minmax_op) (const R *, R *, octave_idx_type, + octave_idx_type, octave_idx_type)) +{ + octave_idx_type l, n, u; + dim_vector dims = src.dims (); + get_extent_triplet (dims, dim, l, n, u); + + // If the dimension is zero, we don't do anything. + if (dim < dims.length () && dims(dim) != 0) dims(dim) = 1; + dims.chop_trailing_singletons (); + + Array ret (dims); + mx_minmax_op (src.data (), ret.fortran_vec (), l, n, u); + + return ret; +} + +template +inline Array +do_mx_minmax_op (const Array& src, Array& idx, int dim, + void (*mx_minmax_op) (const R *, R *, octave_idx_type *, octave_idx_type, octave_idx_type, octave_idx_type)) { octave_idx_type l, n, u; @@ -1237,28 +1250,7 @@ if (dim < dims.length () && dims(dim) != 0) dims(dim) = 1; dims.chop_trailing_singletons (); - ArrayType ret (dims); - mx_minmax_op (src.data (), ret.fortran_vec (), l, n, u); - - return ret; -} - -template -inline ArrayType -do_mx_minmax_op (const ArrayType& src, Array& idx, int dim, - void (*mx_minmax_op) (const AELEMT(ArrayType) *, AELEMT(ArrayType) *, - octave_idx_type *, - octave_idx_type, octave_idx_type, octave_idx_type)) -{ - octave_idx_type l, n, u; - dim_vector dims = src.dims (); - get_extent_triplet (dims, dim, l, n, u); - - // If the dimension is zero, we don't do anything. - if (dim < dims.length () && dims(dim) != 0) dims(dim) = 1; - dims.chop_trailing_singletons (); - - ArrayType ret (dims); + Array ret (dims); if (idx.dims () != dims) idx = Array (dims); mx_minmax_op (src.data (), ret.fortran_vec (), idx.fortran_vec (), @@ -1267,34 +1259,33 @@ return ret; } -template -inline ArrayType -do_mx_cumminmax_op (const ArrayType& src, int dim, - void (*mx_cumminmax_op) (const AELEMT(ArrayType) *, AELEMT(ArrayType) *, +template +inline Array +do_mx_cumminmax_op (const Array& src, int dim, + void (*mx_cumminmax_op) (const R *, R *, octave_idx_type, + octave_idx_type, octave_idx_type)) +{ + octave_idx_type l, n, u; + dim_vector dims = src.dims (); + get_extent_triplet (dims, dim, l, n, u); + + Array ret (dims); + mx_cumminmax_op (src.data (), ret.fortran_vec (), l, n, u); + + return ret; +} + +template +inline Array +do_mx_cumminmax_op (const Array& src, Array& idx, int dim, + void (*mx_cumminmax_op) (const R *, R *, octave_idx_type *, octave_idx_type, octave_idx_type, octave_idx_type)) { octave_idx_type l, n, u; dim_vector dims = src.dims (); get_extent_triplet (dims, dim, l, n, u); - ArrayType ret (dims); - mx_cumminmax_op (src.data (), ret.fortran_vec (), l, n, u); - - return ret; -} - -template -inline ArrayType -do_mx_cumminmax_op (const ArrayType& src, Array& idx, int dim, - void (*mx_cumminmax_op) (const AELEMT(ArrayType) *, AELEMT(ArrayType) *, - octave_idx_type *, - octave_idx_type, octave_idx_type, octave_idx_type)) -{ - octave_idx_type l, n, u; - dim_vector dims = src.dims (); - get_extent_triplet (dims, dim, l, n, u); - - ArrayType ret (dims); + Array ret (dims); if (idx.dims () != dims) idx = Array (dims); mx_cumminmax_op (src.data (), ret.fortran_vec (), idx.fortran_vec (), @@ -1303,10 +1294,10 @@ return ret; } -template -inline ArrayType -do_mx_diff_op (const ArrayType& src, int dim, octave_idx_type order, - void (*mx_diff_op) (const AELEMT(ArrayType) *, AELEMT(ArrayType) *, +template +inline Array +do_mx_diff_op (const Array& src, int dim, octave_idx_type order, + void (*mx_diff_op) (const R *, R *, octave_idx_type, octave_idx_type, octave_idx_type, octave_idx_type)) { @@ -1323,14 +1314,14 @@ if (dims(dim) <= order) { dims (dim) = 0; - return ArrayType (dims); + return Array (dims); } else { dims(dim) -= order; } - ArrayType ret (dims); + Array ret (dims); mx_diff_op (src.data (), ret.fortran_vec (), l, n, u, order); return ret; diff -r b4f67ca318d8 -r b47ab50a6aa8 liboctave/mx-op-defs.h --- a/liboctave/mx-op-defs.h Thu Feb 25 15:41:20 2010 -0500 +++ b/liboctave/mx-op-defs.h Fri Feb 26 09:47:54 2010 +0100 @@ -35,7 +35,7 @@ R \ F (const V& v, const S& s) \ { \ - return do_ms_binary_op (v, s, OP); \ + return do_ms_binary_op (v, s, OP); \ } #define VS_BIN_OPS(R, V, S) \ @@ -50,7 +50,7 @@ R \ F (const S& s, const V& v) \ { \ - return do_sm_binary_op (s, v, OP); \ + return do_sm_binary_op (s, v, OP); \ } #define SV_BIN_OPS(R, S, V) \ @@ -65,7 +65,7 @@ R \ F (const V1& v1, const V2& v2) \ { \ - return do_mm_binary_op (v1, v2, OP, #F); \ + return do_mm_binary_op (v1, v2, OP, #F); \ } #define VV_BIN_OPS(R, V1, V2) \ @@ -80,7 +80,7 @@ R \ OP (const M& m, const S& s) \ { \ - return do_ms_binary_op (m, s, F); \ + return do_ms_binary_op (m, s, F); \ } #define MS_BIN_OPS(R, M, S) \ @@ -93,7 +93,7 @@ boolMatrix \ F (const M& m, const S& s) \ { \ - return do_ms_binary_op (m, s, OP); \ + return do_ms_binary_op (m, s, OP); \ } #define MS_CMP_OPS(M, S) \ @@ -108,7 +108,7 @@ boolMatrix \ F (const M& m, const S& s) \ { \ - return do_ms_binary_op (m, s, OP); \ + return do_ms_binary_op (m, s, OP); \ } #define MS_BOOL_OPS(M, S) \ @@ -121,7 +121,7 @@ R \ OP (const S& s, const M& m) \ { \ - return do_sm_binary_op (s, m, F); \ + return do_sm_binary_op (s, m, F); \ } #define SM_BIN_OPS(R, S, M) \ @@ -134,7 +134,7 @@ boolMatrix \ F (const S& s, const M& m) \ { \ - return do_sm_binary_op (s, m, OP); \ + return do_sm_binary_op (s, m, OP); \ } #define SM_CMP_OPS(S, M) \ @@ -149,7 +149,7 @@ boolMatrix \ F (const S& s, const M& m) \ { \ - return do_sm_binary_op (s, m, OP); \ + return do_sm_binary_op (s, m, OP); \ } #define SM_BOOL_OPS(S, M) \ @@ -162,7 +162,7 @@ R \ OP (const M1& m1, const M2& m2) \ { \ - return do_mm_binary_op (m1, m2, F, #OP); \ + return do_mm_binary_op (m1, m2, F, #OP); \ } #define MM_BIN_OPS(R, M1, M2) \ @@ -175,7 +175,7 @@ boolMatrix \ F (const M1& m1, const M2& m2) \ { \ - return do_mm_binary_op (m1, m2, OP, #F); \ + return do_mm_binary_op (m1, m2, OP, #F); \ } #define MM_CMP_OPS(M1, M2) \ @@ -190,7 +190,7 @@ boolMatrix \ F (const M1& m1, const M2& m2) \ { \ - return do_mm_binary_op (m1, m2, OP, #F); \ + return do_mm_binary_op (m1, m2, OP, #F); \ } #define MM_BOOL_OPS(M1, M2) \ @@ -203,7 +203,7 @@ R \ OP (const ND& m, const S& s) \ { \ - return do_ms_binary_op (m, s, F); \ + return do_ms_binary_op (m, s, F); \ } #define NDS_BIN_OPS(R, ND, S) \ @@ -216,7 +216,7 @@ boolNDArray \ F (const ND& m, const S& s) \ { \ - return do_ms_binary_op (m, s, OP); \ + return do_ms_binary_op (m, s, OP); \ } #define NDS_CMP_OPS(ND, S) \ @@ -231,7 +231,7 @@ boolNDArray \ F (const ND& m, const S& s) \ { \ - return do_ms_binary_op (m, s, OP); \ + return do_ms_binary_op (m, s, OP); \ } #define NDS_BOOL_OPS(ND, S) \ @@ -248,7 +248,7 @@ R \ OP (const S& s, const ND& m) \ { \ - return do_sm_binary_op (s, m, F); \ + return do_sm_binary_op (s, m, F); \ } #define SND_BIN_OPS(R, S, ND) \ @@ -261,7 +261,7 @@ boolNDArray \ F (const S& s, const ND& m) \ { \ - return do_sm_binary_op (s, m, OP); \ + return do_sm_binary_op (s, m, OP); \ } #define SND_CMP_OPS(S, ND) \ @@ -276,7 +276,7 @@ boolNDArray \ F (const S& s, const ND& m) \ { \ - return do_sm_binary_op (s, m, OP); \ + return do_sm_binary_op (s, m, OP); \ } #define SND_BOOL_OPS(S, ND) \ @@ -293,7 +293,7 @@ R \ OP (const ND1& m1, const ND2& m2) \ { \ - return do_mm_binary_op (m1, m2, F, #OP); \ + return do_mm_binary_op (m1, m2, F, #OP); \ } #define NDND_BIN_OPS(R, ND1, ND2) \ @@ -306,7 +306,7 @@ boolNDArray \ F (const ND1& m1, const ND2& m2) \ { \ - return do_mm_binary_op (m1, m2, OP, #F); \ + return do_mm_binary_op (m1, m2, OP, #F); \ } #define NDND_CMP_OPS(ND1, ND2) \ @@ -321,7 +321,7 @@ boolNDArray \ F (const ND1& m1, const ND2& m2) \ { \ - return do_mm_binary_op (m1, m2, OP, #F); \ + return do_mm_binary_op (m1, m2, OP, #F); \ } #define NDND_BOOL_OPS(ND1, ND2) \ @@ -550,21 +550,21 @@ T \ FCN (S d, const T& m) \ { \ - return do_sm_binary_op (d, m, mx_inline_x##FCN); \ + return do_sm_binary_op (d, m, mx_inline_x##FCN); \ } #define NDS_MINMAX_FCN(FCN, OP, T, S) \ T \ FCN (const T& m, S d) \ { \ - return do_ms_binary_op (m, d, mx_inline_x##FCN); \ + return do_ms_binary_op (m, d, mx_inline_x##FCN); \ } #define NDND_MINMAX_FCN(FCN, OP, T, S) \ T \ FCN (const T& a, const T& b) \ { \ - return do_mm_binary_op (a, b, mx_inline_x##FCN, #FCN); \ + return do_mm_binary_op (a, b, mx_inline_x##FCN, #FCN); \ } #define MINMAX_FCNS(T, S) \