Mercurial > hg > octave-lyh
diff src/data.cc @ 9858:47c5af1868df
move idx_add methods to MArrayN
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 24 Nov 2009 12:30:26 +0100 |
parents | 870a69bac55c |
children | b5aa5d9ee6b9 |
line wrap: on
line diff
--- a/src/data.cc +++ b/src/data.cc @@ -6330,24 +6330,16 @@ else if (idx.extent (n) > n) error ("accumarray: index out of range"); - // FIXME: the class tree in liboctave is overly complicated, hence the - // following type gymnastics. - MArray<T> array; + NDT retval (dim_vector (n, 1), T()); if (vals.numel () == 1) - { - array = MArray<T> (n, T ()); - array.idx_add (idx, vals (0)); - } - else if (vals.length () == idx.length (n)) - { - array = MArray<T> (n, T ()); - array.idx_add (idx, MArray<T> (vals)); - } + retval.idx_add (idx, vals (0)); + else if (vals.numel () == idx.length (n)) + retval.idx_add (idx, vals); else error ("accumarray: dimensions mismatch"); - return NDT (MArrayN<T> (Array<T> (array))); + return retval; } DEFUN (__accumarray_sum__, args, ,