bug 4810
[scilab.git] / scilab / modules / elementary_functions / macros / %sp_gsort.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) DIGITEO - 2009 - Allan CORNET
3 // 
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at    
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 function A = %sp_gsort(A, optsort, directionsort)
11   [ij, v, mn] = spget(A);
12   if mn(2) == 1 then
13     last = find( v<0 );
14     first = find( v>0 );
15     nn = size(v, '*');
16     v([1:size(first, '*'), nn-size(last, '*')+1:nn]) = [gsort(v(first));gsort(v(last))];
17     A = sparse(ij, v, mn);
18   elseif mn(1) == 1 then
19     last = find( v<0 );
20     first = find( v>0 );
21     nn = size(v, '*');
22     v([1:size(first, '*'),nn-size(last, '*')+1:nn]) = [gsort(v(first));gsort(v(last))];
23     A = sparse(ij, v, mn);  
24   else
25     error(999,msprintf(_("%s: Wrong size for input argument #%d: sparse vectors expected.\n"),'gsort',1));
26   end
27 endfunction