summaryrefslogtreecommitdiff
path: root/modules/overloading/macros/%sp_i_sp.sci
blob: 0f50f6b79ca0f86f4071e294c0ab54d826616429 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) INRIA
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt

function a=%sp_i_sp(i,j,b,a)

    [lhs,rhs]=argn(0)
    if rhs==3 then
        a=b;
        b=j;
        [m,n]=size(a)
        a=a(:)
        a(i)=b(:)
        a=matrix(a,m,n)
    elseif rhs == 4 then
        // bruno (feb 20 2006) add the following cases not taken
        // into account by the interface spops :
        if size(b,1) == 1 & size(b,2) == 1 then
            //   A(i,j) = B with B a 1x1 sparse matrix
            a(i,j) = full(b)
        elseif i == : & j == : then
            //   A(:,:) = B with mA x nA = mB x nB but mA ~= mB
            //   B is reshaped with the sizes of A
            [m,n] = size(a)
            a = matrix(b,m,n)
        else
            // print an error
            error(msprintf(_("%s: Sparse insertion case is not implemented.\n"),"%sp_i_sp"));
        end
    end
endfunction