* Bug #12059 fixed - Index returned by gsort of sparse were wrong. 07/10407/4
Charlotte HECQUET [Wed, 6 Feb 2013 17:03:23 +0000 (18:03 +0100)]
Change-Id: I1ff44f0737f53166672281174479140758bca627

scilab/CHANGES_5.4.X
scilab/modules/elementary_functions/macros/%sp_gsort.sci
scilab/modules/elementary_functions/tests/nonreg_tests/bug_12059.dia.ref [new file with mode: 0644]
scilab/modules/elementary_functions/tests/nonreg_tests/bug_12059.tst [new file with mode: 0644]

index e918e56..185feb0 100644 (file)
@@ -342,6 +342,8 @@ Bug fixes
 
 * Bug #12050 fixed - Fix a typo: dimensionnal => dimensional.
 
+* Bug #12059 fixed - Index returned by gsort of sparse were wrong.
+
 * Bug #12062 fixed - getsystemmetrics() failed for some properties such as 'SM_CXMAXIMIZED'.
 
 * Bug #12071 fixed - Printed info of a XML object were inconsistent with
index d132854..208f20c 100644 (file)
@@ -41,7 +41,6 @@ function [A, k] = %sp_gsort(A, optsort, directionsort)
         error(999,msprintf(_("%s: Wrong size for input argument #%d: sparse vectors expected.\n"), 'gsort', 1));\r
     end\r
 \r
-\r
     if mn(1) == 1 then\r
         // if A is a row vector and optsort = 'r', the result is the \r
         // first input argument\r
@@ -61,6 +60,7 @@ function [A, k] = %sp_gsort(A, optsort, directionsort)
                 v = gsort(v', optsort, directionsort);\r
             else\r
                 [v, k] = gsort(v', optsort, directionsort);\r
+                k=ij(k,2)';\r
             end\r
 \r
             //Obtain the indices corresponding to positive values of v\r
@@ -119,6 +119,7 @@ function [A, k] = %sp_gsort(A, optsort, directionsort)
                 v = gsort(v, optsort, directionsort);\r
             else\r
                 [v, k] = gsort(v, optsort, directionsort);\r
+                k=ij(k,1);\r
             end\r
 \r
             //Obtain the indices corresponding to positive values of v\r
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12059.dia.ref b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12059.dia.ref
new file mode 100644 (file)
index 0000000..5bab79a
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte Hecquet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12059 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12059
+//
+// <-- Short Description -->
+// Index returned by gsort of sparse are wrong.
+//
+indref=[2 6 5 3 4 1 8];
+[res ind]=gsort(sparse([2 9 6 4 7 8 0 2]));
+assert_checkequal(ind,indref);
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12059.tst b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12059.tst
new file mode 100644 (file)
index 0000000..5bab79a
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte Hecquet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12059 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12059
+//
+// <-- Short Description -->
+// Index returned by gsort of sparse are wrong.
+//
+indref=[2 6 5 3 4 1 8];
+[res ind]=gsort(sparse([2 9 6 4 7 8 0 2]));
+assert_checkequal(ind,indref);