Mercurial > hg > octave-max
diff liboctave/Array.cc @ 9878:ead4f9c82a9a
implement Array<T>::nnz
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 27 Nov 2009 09:10:21 +0100 |
parents | c0b54271904b |
children | cddd5c3d5f04 |
line wrap: on
line diff
--- a/liboctave/Array.cc +++ b/liboctave/Array.cc @@ -2425,6 +2425,20 @@ } template <class T> +octave_idx_type +Array<T>::nnz (void) const +{ + const T *src = data (); + octave_idx_type nel = nelem (), retval = 0; + const T zero = T (); + for (octave_idx_type i = 0; i < nel; i++) + if (src[i] != zero) + retval++; + + return retval; +} + +template <class T> Array<octave_idx_type> Array<T>::find (octave_idx_type n, bool backward) const { @@ -2693,6 +2707,10 @@ template <> Array<bool> \ Array<T>::lookupb (const Array<T>&, sortmode) const \ { return Array<bool> (); } \ + \ +template <> octave_idx_type \ +Array<T>::nnz (void) const\ +{ return 0; } \ template <> Array<octave_idx_type> \ Array<T>::find (octave_idx_type, bool) const\ { return Array<octave_idx_type> (); } \