Mercurial > hg > octave-nkf
diff liboctave/MDiagArray2.cc @ 10362:b47ab50a6aa8
simplify appliers in mx-inlines.cc
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 26 Feb 2010 09:47:54 +0100 |
parents | 4c0cdbe0acca |
children | 4d1fc073fbb7 |
line wrap: on
line diff
--- a/liboctave/MDiagArray2.cc +++ b/liboctave/MDiagArray2.cc @@ -51,29 +51,6 @@ // Element by element MDiagArray2 by MDiagArray2 ops. -template <class T> -MDiagArray2<T>& -operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b) -{ - if (a.is_shared ()) - a = a + b; - else - do_mm_inplace_op<MDiagArray2<T>, MDiagArray2<T> > (a, b, mx_inline_add2, "+="); - return a; -} - -template <class T> -MDiagArray2<T>& -operator -= (MDiagArray2<T>& a, const MDiagArray2<T>& b) -{ - if (a.is_shared ()) - a = a - b; - else - do_mm_inplace_op<MDiagArray2<T>, MDiagArray2<T> > (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<T> \ operator OP (const MDiagArray2<T>& a, const T& s) \ { \ - return do_ms_binary_op<MDiagArray2<T>, MDiagArray2<T>, T> (a, s, FN); \ + return MDiagArray2<T> (do_ms_binary_op<T, T, T> (a, s, FN), a.d1, a.d2); \ } MARRAY_DAS_OP (*, mx_inline_mul) @@ -93,7 +70,7 @@ MDiagArray2<T> operator * (const T& s, const MDiagArray2<T>& a) { - return do_sm_binary_op<MDiagArray2<T>, T, MDiagArray2<T> > (s, a, mx_inline_mul); + return MDiagArray2<T> (do_sm_binary_op<T, T, T> (s, a, mx_inline_mul), a.d1, a.d2); } // Element by element MDiagArray2 by MDiagArray2 ops. @@ -103,7 +80,9 @@ MDiagArray2<T> \ FCN (const MDiagArray2<T>& a, const MDiagArray2<T>& b) \ { \ - return do_mm_binary_op<MDiagArray2<T>, MDiagArray2<T>, MDiagArray2<T> > (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<T> (do_mm_binary_op<T, T, T> (a, b, FN, #FCN), a.d1, a.d2); \ } MARRAY_DADA_OP (operator +, +, mx_inline_add) @@ -123,5 +102,5 @@ MDiagArray2<T> operator - (const MDiagArray2<T>& a) { - return do_mx_unary_op<MDiagArray2<T>, MDiagArray2<T> > (a, mx_inline_uminus); + return MDiagArray2<T> (do_mx_unary_op<T, T> (a, mx_inline_uminus), a.d1, a.d2); }