Mercurial > hg > octave-lyh
diff liboctave/idx-vector.cc @ 8367:445d27d79f4e
support permutation matrix objects
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 04 Dec 2008 08:31:56 +0100 |
parents | 9238637cb81c |
children | 584d9e80556b |
line wrap: on
line diff
--- a/liboctave/idx-vector.cc +++ b/liboctave/idx-vector.cc @@ -528,6 +528,39 @@ dim_vector (1, len), DIRECT); } +bool +idx_vector::is_permutation (octave_idx_type n) const +{ + bool retval = false; + + if (is_colon_equiv (n)) + retval = true; + else if (length (n) == n && extent(n) == n) + { + bool *left = new bool[n]; + + std::fill (left, left + n, true); + + retval = true; + + for (octave_idx_type i = 0, len = length (); i < len; i++) + { + octave_idx_type k = xelem (i); + if (left[k]) + left[k] = false; + else + { + retval = false; + break; + } + } + + delete left; + } + + return retval; +} + octave_idx_type idx_vector::freeze (octave_idx_type z_len, const char *tag, bool resize_ok) {