Mercurial > hg > octave-lyh
diff src/DLD-FUNCTIONS/luinc.cc @ 5322:22994a5730f9
[project @ 2005-04-29 13:04:24 by dbateman]
author | dbateman |
---|---|
date | Fri, 29 Apr 2005 13:04:25 +0000 |
parents | 4c8a2e4e0717 |
children | 9761b7d24e9e |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/luinc.cc +++ b/src/DLD-FUNCTIONS/luinc.cc @@ -30,6 +30,7 @@ #include "utils.h" #include "oct-map.h" +#include "SparseType.h" #include "SparseCmplxLU.h" #include "SparsedbleLU.h" #include "ov-re-sparse.h" @@ -146,9 +147,10 @@ if (!error_state) { - if (args(0).class_name () == "sparse") + if (args(0).type_name () == "sparse matrix") { SparseMatrix sm = args(0).sparse_matrix_value (); + octave_idx_type sm_nr = sm.rows (); octave_idx_type sm_nc = sm.cols (); ColumnVector Qinit (sm_nc); @@ -168,8 +170,11 @@ SparseMatrix P = fact.Pr (); SparseMatrix L = P.transpose () * fact.L (); - retval(1) = fact.U (); - retval(0) = L; + retval(1) = octave_value (fact.U (), + SparseType (SparseType::Upper)); + retval(0) = octave_value (L, SparseType + (SparseType::Permuted_Lower, + sm_nr, fact.row_perm ())); } break; @@ -179,8 +184,10 @@ milu, udiag); retval(2) = fact.Pr (); - retval(1) = fact.U (); - retval(0) = fact.L (); + retval(1) = octave_value (fact.U (), + SparseType (SparseType::Upper)); + retval(0) = octave_value (fact.L (), + SparseType (SparseType::Lower)); } break; @@ -192,17 +199,20 @@ retval(3) = fact.Pc (); retval(2) = fact.Pr (); - retval(1) = fact.U (); - retval(0) = fact.L (); + retval(1) = octave_value (fact.U (), + SparseType (SparseType::Upper)); + retval(0) = octave_value (fact.L (), + SparseType (SparseType::Lower)); } break; } } } - else if (args(0).class_name () == "sparse complex") + else if (args(0).type_name () == "sparse complex matrix") { SparseComplexMatrix sm = args(0).sparse_complex_matrix_value (); + octave_idx_type sm_nr = sm.rows (); octave_idx_type sm_nc = sm.cols (); ColumnVector Qinit (sm_nc); @@ -222,8 +232,11 @@ SparseMatrix P = fact.Pr (); SparseComplexMatrix L = P.transpose () * fact.L (); - retval(1) = fact.U (); - retval(0) = L; + retval(1) = octave_value (fact.U (), + SparseType (SparseType::Upper)); + retval(0) = octave_value (L, SparseType + (SparseType::Permuted_Lower, + sm_nr, fact.row_perm ())); } break; @@ -233,8 +246,10 @@ droptol, milu, udiag); retval(2) = fact.Pr (); - retval(1) = fact.U (); - retval(0) = fact.L (); + retval(1) = octave_value (fact.U (), + SparseType (SparseType::Upper)); + retval(0) = octave_value (fact.L (), + SparseType (SparseType::Lower)); } break; @@ -246,8 +261,10 @@ retval(3) = fact.Pc (); retval(2) = fact.Pr (); - retval(1) = fact.U (); - retval(0) = fact.L (); + retval(1) = octave_value (fact.U (), + SparseType (SparseType::Upper)); + retval(0) = octave_value (fact.L (), + SparseType (SparseType::Lower)); } break; }