Bug #11618: If A is a complex sparse matrix, A(:) returned wrong values. 20/8520/2
Adeline CARNIS [Fri, 3 Aug 2012 14:09:04 +0000 (16:09 +0200)]
Change-Id: I08002fc6ef618525fba2f2792e144479761ea86b

scilab/CHANGES_5.4.X
scilab/modules/sparse/sci_gateway/fortran/spops.f
scilab/modules/sparse/tests/nonreg_tests/bug_11618.dia.ref [new file with mode: 0644]
scilab/modules/sparse/tests/nonreg_tests/bug_11618.tst [new file with mode: 0644]

index fdd5a4d..b89ad5b 100644 (file)
@@ -23,6 +23,8 @@ Bug Fixes
 
 * Bug #11606 fixed - exit() was too slow in nw mode when driver("png") was set.
 
+* Bug #11618 fixed - A(:) returned wrong values when A was a complex sparse matrix.
+
 
 
 
index 6bf7a8e..966b038 100644 (file)
@@ -1,5 +1,6 @@
 c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 c Copyright (C) INRIA
+c Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
 c 
 c This file must be used under the terms of the CeCILL.
 c This source file is licensed as described in the file COPYING, which
@@ -1165,8 +1166,9 @@ c     .     reshape to column vector via spmat (reshape is named matrix in scila
                call dspmat(m2,n2,stk(lr),nel2,istk(irc2),m2*n2
      $              ,istk(ircr),istk(iw))  
             else
-               call wspmat(m2,n2,stk(lr),stk(lr+mn2),nel2,istk(irc2)
-     $              ,m2*n2,istk(ircr),istk(iw)) 
+
+               call wspmat(m2,n2,stk(lr),stk(lr+nel2),nel2,istk(irc2)
+     $              ,m2*n2,istk(ircr),istk(iw))
             endif
             call icopy(m2*n2+nel2,istk(ircr),1,istk(irc1),1)
             call unsfdcopy(nel2*(it2+1),stk(lr),1,stk(l1),1)
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_11618.dia.ref b/scilab/modules/sparse/tests/nonreg_tests/bug_11618.dia.ref
new file mode 100644 (file)
index 0000000..ceffb94
--- /dev/null
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 11618 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11618
+//
+// <-- Short Description -->
+//    if A is a complex sparse matrix, A(:) returned wrong values
+A = [0 %i;1 2]
+ A  =
+    0     i    
+    1.    2.   
+A1 = sparse(A);
+assert_checkequal(full(A1(:)), A(:));
+A = [1 0; 3 %i];
+A1 = sparse(A);
+assert_checkequal(full(A1(:)), A(:));
+A = [%i 3; 0 1];
+A1 = sparse(A);
+assert_checkequal(full(A1(:)), A(:));
+A = [1 %i;%i 0];
+A1 = sparse(A);
+assert_checkequal(full(A1(:)), A(:));
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_11618.tst b/scilab/modules/sparse/tests/nonreg_tests/bug_11618.tst
new file mode 100644 (file)
index 0000000..a085828
--- /dev/null
@@ -0,0 +1,32 @@
+// =============================================================================\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
+//\r
+//  This file is distributed under the same license as the Scilab package.\r
+// =============================================================================\r
+\r
+// <-- CLI SHELL MODE -->\r
+\r
+// <-- Non-regression test for bug 11618 -->\r
+//\r
+// <-- Bugzilla URL -->\r
+// http://bugzilla.scilab.org/show_bug.cgi?id=11618\r
+//\r
+// <-- Short Description -->\r
+//    if A is a complex sparse matrix, A(:) returned wrong values\r
+\r
+A = [0 %i;1 2]\r
+A1 = sparse(A);\r
+assert_checkequal(full(A1(:)), A(:));\r
+\r
+A = [1 0; 3 %i];\r
+A1 = sparse(A);\r
+assert_checkequal(full(A1(:)), A(:));\r
+\r
+A = [%i 3; 0 1];\r
+A1 = sparse(A);\r
+assert_checkequal(full(A1(:)), A(:));\r
+\r
+A = [1 %i;%i 0];\r
+A1 = sparse(A);\r
+assert_checkequal(full(A1(:)), A(:));\r\r