Mercurial > hg > octave-nkf
diff src/Cell.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 | 3209a584e1ac |
children | 0ef13e15319b |
line wrap: on
line diff
--- a/src/Cell.cc +++ b/src/Cell.cc @@ -239,49 +239,9 @@ } Cell -Cell::diag (void) const -{ - return diag (0); -} - -Cell Cell::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; - - Cell d; - - if (nnr > 0 && nnc > 0) - { - octave_idx_type ndiag = (nnr < nnc) ? nnr : nnc; - - d.resize (dim_vector (ndiag, 1)); - - if (k > 0) - { - for (octave_idx_type i = 0; i < ndiag; i++) - d.elem (i) = elem (i, i+k); - } - else if (k < 0) - { - for (octave_idx_type i = 0; i < ndiag; i++) - d.elem (i) = elem (i-k, i); - } - else - { - for (octave_idx_type i = 0; i < ndiag; i++) - d.elem (i) = elem (i, i); - } - } - else - error ("diag: requested diagonal out of range"); - - return d; + return ArrayN<octave_value>::diag (k); } /*