251516965949e9948b540159942f3a1c4789235e
[scilab.git] / scilab / modules / overloading / macros / %sp_z_sp.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function r=%sp_z_sp(a,b)
14     //  a.\.b with a and b sparse
15
16     [ija,va,mna]=spget(a)
17     [ijb,vb,mnb]=spget(b)
18     if size(ija,1)<>prod(mna)|or(va==0) then error(27),end
19     ia=ija(:,1);ja=ija(:,2)
20     ib=ijb(:,1);jb=ijb(:,2)
21
22     ij=[((ia-ones(ia))*mnb(1)).*.ones(ib)+ones(ia).*.ib,..
23     ((ja-ones(ja))*mnb(2)).*.ones(jb)+ones(ia).*.jb]
24     r=sparse(ij,va.\.vb,mna.*mnb)
25 endfunction