# HG changeset patch # User Jaroslav Hajek # Date 1231573583 -3600 # Node ID aaf2b6d6813c42145ba9c8fb6bd8da68507a17dd # Parent 9e1973f7709d3ea437743c3dc5a951c0fa6061e5 fix behaviour of "full" diff -r 9e1973f7709d -r aaf2b6d6813c src/ChangeLog --- a/src/ChangeLog Fri Jan 09 16:25:11 2009 +0100 +++ b/src/ChangeLog Sat Jan 10 08:46:23 2009 +0100 @@ -1,3 +1,8 @@ +2009-01-10 Jaroslav Hajek + + * DLD-FUNCTIONS/sparse.cc (Ffull): Convert diagonal & permutation + matrices, leave other classes untouched. + 2009-01-09 Jaroslav Hajek * OPERATORS/op-cdm-cdm.cc: Install missing widening op. diff -r 9e1973f7709d -r aaf2b6d6813c src/DLD-FUNCTIONS/sparse.cc --- a/src/DLD-FUNCTIONS/sparse.cc Fri Jan 09 16:25:11 2009 +0100 +++ b/src/DLD-FUNCTIONS/sparse.cc Sat Jan 10 08:46:23 2009 +0100 @@ -352,7 +352,7 @@ DEFUN_DLD (full, args, , "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{FM} =} full (@var{SM})\n\ - returns a full storage matrix from a sparse one\n\ + returns a full storage matrix from a sparse, diagonal, permutation matrix or a range.\n\ @seealso{sparse}\n\ @end deftypefn") { @@ -373,10 +373,16 @@ else if (args(0).type_name () == "sparse bool matrix") retval = args(0).bool_matrix_value (); } - else if (args(0).is_real_type()) - retval = args(0).matrix_value(); - else if (args(0).is_complex_type()) - retval = args(0).complex_matrix_value(); + else if (args(0).is_diag_matrix () || args(0).is_perm_matrix ()) + { + octave_value_list idx; + idx(0) = idx(1) = ':'; + retval = args(0).do_index_op (idx); + } + else if (args(0).is_range ()) + retval = args(0).matrix_value (); + else if (args(0).is_matrix_type ()) + retval = args(0); else gripe_wrong_type_arg ("full", args(0));