* Bug #12059 fixed - Index returned by gsort of sparse were wrong.
[scilab.git] / scilab / modules / elementary_functions / macros / %sp_gsort.sci
index 29c7f50..208f20c 100644 (file)
@@ -44,10 +44,10 @@ function [A, k] = %sp_gsort(A, optsort, directionsort)
     if mn(1) == 1 then\r
         // if A is a row vector and optsort = 'r', the result is the \r
         // first input argument\r
-        if strcmp(optsort, 'r') == 0 |strcmp(optsort, 'lr') == 0 then\r
+        if strcmp(optsort, 'r') == 0 |strcmp(optsort, 'lr') == 0 | v == [] then\r
             A = A;\r
             if lhs == 2 then\r
-                if strcmp(optsort, 'lr') == 0 then\r
+                if strcmp(optsort, 'lr') == 0 | ij == [] then\r
                     k = 1;\r
                 else\r
                     k = ij(:,1);\r
@@ -60,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
@@ -101,10 +102,10 @@ function [A, k] = %sp_gsort(A, optsort, directionsort)
     if mn(2) == 1 then\r
         // if A is a column vector and optsort = 'c', the result is the \r
         // first input argument\r
-        if strcmp(optsort, 'c') == 0 | strcmp(optsort, 'lc') == 0 then\r
+        if strcmp(optsort, 'c') == 0 | strcmp(optsort, 'lc') == 0 | v == [] then\r
             A = A;\r
             if lhs == 2 then\r
-                if strcmp(optsort, 'lc') == 0 then\r
+                if strcmp(optsort, 'lc') == 0 | ij == [] then\r
                     k = 1;\r
                 else\r
                     k = ij(:,2);\r
@@ -118,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