* Deactivate images generation during documentation build since graphics functions...
[scilab.git] / scilab / test / good / %sp_cumsum.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2010 -  INRIA - Serge Steer
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 r=%sp_cumsum(a,d,typ)
11   rhs=argn(2)
12   if rhs==1 then
13     d='*'
14   elseif rhs==2 then 
15     if argn(2)==2& or(d==['native','double']) then
16       d='*'
17     end
18   end
19   if size(d,'*')<>1 then 
20     if type(d)==10 then
21       error(msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"),"cumsum",2))
22     else
23       error(msprintf(_("%s: Wrong size for input argument #%d: A scalar expected.\n"),"cumsum",2))
24     end
25   end
26   if type(d)==10 then
27     d=find(d==['m','*','r','c'])
28     if d==[] then
29       error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
30                      "cumsum",2,"""*"",""r"",""c"",""m"",1:"+string(ndims(a))))
31     end
32     d=d-2
33   end
34   
35   dims=size(a)
36
37   if d==-1 then 
38     //sum(x,'m'), determine the summation direction
39     d=find(dims>1,1)
40     if d==[] then d=0,end
41   end
42   if d<0 then
43     error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
44                      "cumsum",2,"""*"",""r"",""c"",""m"",1:"+string(ndims(a))))
45   end
46   
47   select d
48   case 0 then
49     ij=spget(a)
50     if size(ij,1)==0 then r=a,return,end
51     mnj=min(ij(:,2));
52     r=sparse([],[],dims);
53     r(1:dims(1),mnj:dims(2))=sparse(cumsum(full(a(:,mnj:$))))
54   case 1 then
55     r=sparse([],[],dims);
56     for k=1:dims(2)
57       r(:,k)=cumsum(a(:,k))
58     end
59   case 2 then
60     r=sparse([],[],dims);
61     for k=1:dims(1)
62       r(k,:)=cumsum(a(k,:))
63     end
64   else
65     r=a
66   end
67  
68 endfunction