# HG changeset patch # User Jason Riedy # Date 1236714251 14400 # Node ID 5bce1357edd605b7c273e52d106917a9419dacad # Parent d865363208d69c721c4b5e3812e215a865b21684 Fix conversion from PermMatrix to SparseMatrix. From 76c98628f1943d583d5813321ec0a3c684d7ac84 Mon Sep 17 00:00:00 2001 Date: Tue, 10 Mar 2009 14:12:59 -0400 The result was transposed and missing its values. Also add a test case. Signed-off-by: Jason Riedy --- liboctave/ChangeLog | 6 ++++++ liboctave/dSparse.cc | 7 +++++-- test/ChangeLog | 4 ++++ test/test_diag_perm.m | 9 +++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff -r d865363208d6 -r 5bce1357edd6 liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Mar 10 13:55:52 2009 -0400 +++ b/liboctave/ChangeLog Tue Mar 10 15:44:11 2009 -0400 @@ -1,3 +1,9 @@ +2009-03-10 Jason Riedy + + * dSparse.cc (SparseMatrix::SparseMatrix (const PermMatrix&)): + Fix conversion to add values to the matrix as well as getting + structure correct. + 2009-03-10 John W. Eaton * Array.h, ArrayN.h, Bounds.h, CmplxAEPBAL.h, CmplxCHOL.h, diff -r d865363208d6 -r 5bce1357edd6 liboctave/dSparse.cc --- a/liboctave/dSparse.cc Tue Mar 10 13:55:52 2009 -0400 +++ b/liboctave/dSparse.cc Tue Mar 10 15:44:11 2009 -0400 @@ -169,13 +169,16 @@ if (a.is_row_perm ()) { for (octave_idx_type i = 0; i < n; i++) - ridx (i) = pv (i); + ridx (pv (i)) = i; } else { for (octave_idx_type i = 0; i < n; i++) - ridx (pv (i)) = i; + ridx (i) = pv (i); } + + for (octave_idx_type i = 0; i < n; i++) + data (i) = 1.0; } bool diff -r d865363208d6 -r 5bce1357edd6 test/ChangeLog --- a/test/ChangeLog Tue Mar 10 13:55:52 2009 -0400 +++ b/test/ChangeLog Tue Mar 10 15:44:11 2009 -0400 @@ -1,3 +1,7 @@ +2009-03-10 Jason Riedy + + * test_diag_perm.m: Add a test for conversion to sparse form. + 2009-02-25 John W. Eaton * build_sparse_tests.sh: Note that saving sparse matrices to MAT diff -r d865363208d6 -r 5bce1357edd6 test/test_diag_perm.m --- a/test/test_diag_perm.m Tue Mar 10 13:55:52 2009 -0400 +++ b/test/test_diag_perm.m Tue Mar 10 15:44:11 2009 -0400 @@ -69,6 +69,14 @@ %! A(3, 1) = Inf; %! assert (Pr * A * Pc, A(pr, pc)); +## conversion to sparse form +%!test +%! n = 7; +%! P = eye (n) (:, randperm (n)); +%! sP = sparse (P); +%! assert (full (sP), full (P)); +%! assert (size (find (sP), 1), n); + ######################################## ## Diagonal matrices