comparison libinterp/corefcn/sparse.cc @ 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 175b392e91fe
children 3afae1432cd6 2dcc4398950d
comparison
equal deleted inserted replaced
18453:9d59bc3dc12d 18454:0821a51a9e1b
123 else 123 else
124 gripe_wrong_type_arg ("sparse", arg); 124 gripe_wrong_type_arg ("sparse", arg);
125 } 125 }
126 else if (nargin == 2) 126 else if (nargin == 2)
127 { 127 {
128 octave_idx_type m = 0, n = 0; 128 octave_idx_type m = 0;
129 if (args(0).is_scalar_type () && args(1).is_scalar_type ()) 129 octave_idx_type n = 0;
130 { 130
131 m = args(0).idx_type_value (); 131 get_dimensions (args(0), args(1), "sparse", m, n);
132 n = args(1).idx_type_value ();
133 }
134 else
135 error ("sparse: dimensions M,N must be scalar");
136 132
137 if (! error_state) 133 if (! error_state)
138 { 134 {
139 if (m >= 0 && n >= 0) 135 if (m >= 0 && n >= 0)
140 retval = SparseMatrix (m, n); 136 retval = SparseMatrix (m, n);
141 else 137 else
142 error ("sparse: dimensions M,N must be positive or zero"); 138 error ("sparse: dimensions must be non-negative");
143 } 139 }
144 } 140 }
145 else if (nargin >= 3) 141 else if (nargin >= 3)
146 { 142 {
147 bool summation = true; 143 bool summation = true;
167 nargin --; 163 nargin --;
168 } 164 }
169 165
170 if (nargin == 5) 166 if (nargin == 5)
171 { 167 {
172 if (args(3).is_scalar_type () && args(4).is_scalar_type ()) 168 get_dimensions (args(3), args(4), "sparse", m, n);
173 {
174 m = args(3).idx_type_value ();
175 n = args(4).idx_type_value ();
176 }
177 else
178 error ("sparse: expecting scalar dimensions");
179
180 169
181 if (! error_state && (m < 0 || n < 0)) 170 if (! error_state && (m < 0 || n < 0))
182 error ("sparse: dimensions must be non-negative"); 171 error ("sparse: dimensions must be non-negative");
183 } 172 }
184 else if (nargin != 3) 173 else if (nargin != 3)