changeset 8951:5bce1357edd6

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 <jason@acm.org> --- liboctave/ChangeLog | 6 ++++++ liboctave/dSparse.cc | 7 +++++-- test/ChangeLog | 4 ++++ test/test_diag_perm.m | 9 +++++++++ 4 files changed, 24 insertions(+), 2 deletions(-)
author Jason Riedy <jason@acm.org>
date Tue, 10 Mar 2009 15:44:11 -0400
parents d865363208d6
children 43aec7c168eb
files liboctave/ChangeLog liboctave/dSparse.cc test/ChangeLog test/test_diag_perm.m
diffstat 4 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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  <jason@acm.org>
+
+	* 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  <jwe@octave.org>
 
 	* Array.h, ArrayN.h, Bounds.h, CmplxAEPBAL.h, CmplxCHOL.h,
--- 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
--- 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  <jason@acm.org>
+
+	* test_diag_perm.m: Add a test for conversion to sparse form.
+
 2009-02-25  John W. Eaton  <jwe@octave.org>
 
 	* build_sparse_tests.sh: Note that saving sparse matrices to MAT
--- 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