Mercurial > octave-nkf
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) |