Mercurial > hg > octave-nkf
diff liboctave/chMatrix.cc @ 7620:36594d5bbe13
Move diag function into the octave_value class
author | David Bateman <dbateman@free.fr> |
---|---|
date | Fri, 21 Mar 2008 00:08:24 +0100 |
parents | 845ca0affec0 |
children | 8af4ba6b4216 |
line wrap: on
line diff
--- a/liboctave/chMatrix.cc +++ b/liboctave/chMatrix.cc @@ -192,50 +192,9 @@ } charMatrix -charMatrix::diag (void) const -{ - return diag (0); -} - -charMatrix charMatrix::diag (octave_idx_type k) const { - octave_idx_type nnr = rows (); - octave_idx_type nnc = cols (); - if (k > 0) - nnc -= k; - else if (k < 0) - nnr += k; - - charMatrix d; - - if (nnr > 0 && nnc > 0) - { - octave_idx_type ndiag = (nnr < nnc) ? nnr : nnc; - - d.resize (ndiag, 1); - - if (k > 0) - { - for (octave_idx_type i = 0; i < ndiag; i++) - d.xelem (i) = elem (i, i+k); - } - else if (k < 0) - { - for (octave_idx_type i = 0; i < ndiag; i++) - d.xelem (i) = elem (i-k, i); - } - else - { - for (octave_idx_type i = 0; i < ndiag; i++) - d.xelem (i) = elem (i, i); - } - } - else - (*current_liboctave_error_handler) - ("diag: requested diagonal out of range"); - - return d; + return MArray2<char>::diag (k); } // FIXME Do these really belong here? Maybe they should be