comparison src/DLD-FUNCTIONS/luinc.cc @ 6027:068e52f1c005

[project @ 2006-10-03 20:07:56 by jwe]
author jwe
date Tue, 03 Oct 2006 20:07:56 +0000
parents 080c08b192d8
children 8b0cfeb06365
comparison
equal deleted inserted replaced
6026:31bf61b463ce 6027:068e52f1c005
166 case 2: 166 case 2:
167 { 167 {
168 SparseLU fact (sm, Qinit, thresh, true, droptol, 168 SparseLU fact (sm, Qinit, thresh, true, droptol,
169 milu, udiag); 169 milu, udiag);
170 170
171 SparseMatrix P = fact.Pr (); 171 if (! error_state)
172 SparseMatrix L = P.transpose () * fact.L (); 172 {
173 retval(1) = octave_value (fact.U (), 173 SparseMatrix P = fact.Pr ();
174 MatrixType (MatrixType::Upper)); 174 SparseMatrix L = P.transpose () * fact.L ();
175 retval(0) = octave_value (L, MatrixType 175 retval(1) = octave_value (fact.U (),
176 (MatrixType::Permuted_Lower, 176 MatrixType (MatrixType::Upper));
177 sm_nr, fact.row_perm ())); 177 retval(0) = octave_value (L, MatrixType
178 (MatrixType::Permuted_Lower,
179 sm_nr, fact.row_perm ()));
180 }
178 } 181 }
179 break; 182 break;
180 183
181 case 3: 184 case 3:
182 { 185 {
183 SparseLU fact (sm, Qinit, thresh, true, droptol, 186 SparseLU fact (sm, Qinit, thresh, true, droptol,
184 milu, udiag); 187 milu, udiag);
185 188
186 retval(2) = fact.Pr (); 189 if (! error_state)
187 retval(1) = octave_value (fact.U (), 190 {
188 MatrixType (MatrixType::Upper)); 191 retval(2) = fact.Pr ();
189 retval(0) = octave_value (fact.L (), 192 retval(1) = octave_value (fact.U (),
190 MatrixType (MatrixType::Lower)); 193 MatrixType (MatrixType::Upper));
194 retval(0) = octave_value (fact.L (),
195 MatrixType (MatrixType::Lower));
196 }
191 } 197 }
192 break; 198 break;
193 199
194 case 4: 200 case 4:
195 default: 201 default:
196 { 202 {
197 SparseLU fact (sm, Qinit, thresh, false, droptol, 203 SparseLU fact (sm, Qinit, thresh, false, droptol,
198 milu, udiag); 204 milu, udiag);
199 205
200 retval(3) = fact.Pc (); 206 if (! error_state)
201 retval(2) = fact.Pr (); 207 {
202 retval(1) = octave_value (fact.U (), 208 retval(3) = fact.Pc ();
203 MatrixType (MatrixType::Upper)); 209 retval(2) = fact.Pr ();
204 retval(0) = octave_value (fact.L (), 210 retval(1) = octave_value (fact.U (),
205 MatrixType (MatrixType::Lower)); 211 MatrixType (MatrixType::Upper));
212 retval(0) = octave_value (fact.L (),
213 MatrixType (MatrixType::Lower));
214 }
206 } 215 }
207 break; 216 break;
208 } 217 }
209 } 218 }
210 } 219 }
228 case 2: 237 case 2:
229 { 238 {
230 SparseComplexLU fact (sm, Qinit, thresh, true, 239 SparseComplexLU fact (sm, Qinit, thresh, true,
231 droptol, milu, udiag); 240 droptol, milu, udiag);
232 241
233 SparseMatrix P = fact.Pr (); 242
234 SparseComplexMatrix L = P.transpose () * fact.L (); 243 if (! error_state)
235 retval(1) = octave_value (fact.U (), 244 {
236 MatrixType (MatrixType::Upper)); 245 SparseMatrix P = fact.Pr ();
237 retval(0) = octave_value (L, MatrixType 246 SparseComplexMatrix L = P.transpose () * fact.L ();
238 (MatrixType::Permuted_Lower, 247 retval(1) = octave_value (fact.U (),
239 sm_nr, fact.row_perm ())); 248 MatrixType (MatrixType::Upper));
249 retval(0) = octave_value (L, MatrixType
250 (MatrixType::Permuted_Lower,
251 sm_nr, fact.row_perm ()));
252 }
240 } 253 }
241 break; 254 break;
242 255
243 case 3: 256 case 3:
244 { 257 {
245 SparseComplexLU fact (sm, Qinit, thresh, true, 258 SparseComplexLU fact (sm, Qinit, thresh, true,
246 droptol, milu, udiag); 259 droptol, milu, udiag);
247 260
248 retval(2) = fact.Pr (); 261 if (! error_state)
249 retval(1) = octave_value (fact.U (), 262 {
250 MatrixType (MatrixType::Upper)); 263 retval(2) = fact.Pr ();
251 retval(0) = octave_value (fact.L (), 264 retval(1) = octave_value (fact.U (),
252 MatrixType (MatrixType::Lower)); 265 MatrixType (MatrixType::Upper));
266 retval(0) = octave_value (fact.L (),
267 MatrixType (MatrixType::Lower));
268 }
253 } 269 }
254 break; 270 break;
255 271
256 case 4: 272 case 4:
257 default: 273 default:
258 { 274 {
259 SparseComplexLU fact (sm, Qinit, thresh, false, 275 SparseComplexLU fact (sm, Qinit, thresh, false,
260 droptol, milu, udiag); 276 droptol, milu, udiag);
261 277
262 retval(3) = fact.Pc (); 278 if (! error_state)
263 retval(2) = fact.Pr (); 279 {
264 retval(1) = octave_value (fact.U (), 280 retval(3) = fact.Pc ();
265 MatrixType (MatrixType::Upper)); 281 retval(2) = fact.Pr ();
266 retval(0) = octave_value (fact.L (), 282 retval(1) = octave_value (fact.U (),
267 MatrixType (MatrixType::Lower)); 283 MatrixType (MatrixType::Upper));
284 retval(0) = octave_value (fact.L (),
285 MatrixType (MatrixType::Lower));
286 }
268 } 287 }
269 break; 288 break;
270 } 289 }
271 } 290 }
272 } 291 }