changeset 18454:0821a51a9e1b stable

allow sparse arguments for dimensions in sparse function (bug #41535) * sparse.cc (Fsparse): Use get_dimensions to extract dimension args.
author John W. Eaton <jwe@octave.org>
date Thu, 13 Feb 2014 11:15:58 -0500
parents 9d59bc3dc12d
children 9fbea0c395ec 9cfba3616503
files libinterp/corefcn/sparse.cc
diffstat 1 files changed, 6 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/sparse.cc	Thu Feb 13 07:45:59 2014 -0800
+++ b/libinterp/corefcn/sparse.cc	Thu Feb 13 11:15:58 2014 -0500
@@ -125,21 +125,17 @@
     }
   else if (nargin == 2)
     {
-      octave_idx_type m = 0, n = 0;
-      if (args(0).is_scalar_type () && args(1).is_scalar_type ())
-        {
-          m = args(0).idx_type_value ();
-          n = args(1).idx_type_value ();
-        }
-      else
-        error ("sparse: dimensions M,N must be scalar");
+      octave_idx_type m = 0;
+      octave_idx_type n = 0;
+
+      get_dimensions (args(0), args(1), "sparse", m, n);
 
       if (! error_state)
         {
           if (m >= 0 && n >= 0)
             retval = SparseMatrix (m, n);
           else
-            error ("sparse: dimensions M,N must be positive or zero");
+            error ("sparse: dimensions must be non-negative");
         }
     }
   else if (nargin >= 3)
@@ -169,14 +165,7 @@
 
           if (nargin == 5)
             {
-              if (args(3).is_scalar_type () && args(4).is_scalar_type ())
-                {
-                  m = args(3).idx_type_value ();
-                  n = args(4).idx_type_value ();
-                }
-              else
-                error ("sparse: expecting scalar dimensions");
-
+              get_dimensions (args(3), args(4), "sparse", m, n);
 
               if (! error_state && (m < 0 || n < 0))
                 error ("sparse: dimensions must be non-negative");