Mercurial > hg > octave-nkf
diff liboctave/MDiagArray2.h @ 8366:8b1a2555c4e2
implement diagonal matrix objects
* * *
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 03 Dec 2008 13:32:57 +0100 |
parents | 82be108cc558 |
children | 445d27d79f4e |
line wrap: on
line diff
--- a/liboctave/MDiagArray2.h +++ b/liboctave/MDiagArray2.h @@ -56,6 +56,9 @@ MDiagArray2 (const DiagArray2<T>& a) : DiagArray2<T> (a) { } + template <class U> + MDiagArray2 (const DiagArray2<U>& a) : DiagArray2<T> (a) { } + explicit MDiagArray2 (const Array<T>& a) : DiagArray2<T> (a) { } ~MDiagArray2 (void) { } @@ -81,6 +84,23 @@ return retval; } + octave_idx_type nnz (void) const + { + octave_idx_type retval = 0; + + const T *d = this->Array<T>::data (); + + octave_idx_type nel = this->Array<T>::numel (); + + for (octave_idx_type i = 0; i < nel; i++) + { + if (d[i] != T ()) + retval++; + } + + return retval; + } + MDiagArray2<T> transpose (void) const { return DiagArray2<T>::transpose (); } MDiagArray2<T> hermitian (T (*fcn) (const T&) = 0) const { return DiagArray2<T>::hermitian (fcn); }