error(number): converting occurrences remaining in all .sce .sci files
[scilab.git] / scilab / modules / overloading / macros / %r_m_r.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 s1 = %r_m_r(s1,s2)
14     //s1 = s1*s2
15     //!
16     fname = "%r_m_r"
17
18     [s1,s2] = sysconv(s1,s2),
19     [n1,d1] = s1(["num","den"]);
20     [n2,d2] = s2(["num","den"]);
21     sz1 = size(n1)
22     sz2 = size(n2)
23
24     indef = %f
25     if or(sz1==-1) then
26         n1 = n1 + 0;
27         d1 = d1 + 0;
28         sz1 = [1 1]
29         if prod(sz2)==1 then
30             indef = %t
31         else
32             msg = _("%s: Eye variable undefined in this context.\n")
33             error(msprintf(msg, fname))
34         end
35     end
36     if or(sz2==-1) then
37         n2 = n2 + 0;
38         d2 = d2 + 0;
39         sz2 = [1 1]
40         if prod(sz1)==1 then
41             indef = %t
42         else
43             msg = _("%s: Eye variable undefined in this context.\n")
44             error(msprintf(msg, fname))
45         end
46     end
47     if prod(sz1)==1 then
48         [num,den] = simp(n1.*n2(:),d1.*d2(:))
49         num = matrix(num,sz2)
50         den = matrix(den,sz2)
51     elseif prod(sz2)==1 then
52         [num, den] = simp(n1(:).*n2,d1(:).*d2)
53         num = matrix(num,sz1)
54         den = matrix(den,sz1)
55     else
56         if size(sz1,"*")>2 | size(sz2,"*")>2 then
57             msg = _("%s: Hypermatrix not supported.\n")
58             error(msprintf(msg, fname))
59         end
60         if sz1(2) <> sz2(1) then
61             msg = _("%s: Arguments #%d and #%d: Incompatible sizes.\n")
62             error(msprintf(msg, fname, 1, 2))
63         end
64
65         l1 = sz1(1);
66         m1 = sz1(2);
67         m2 = sz2(2);
68         for i = 1:l1, pp(i)=lcm(d1(i,:)),end,
69         for j = 1:m2,
70             y = lcm(d2(:,j)),
71             for i = 1:l1,
72                 yij = y*pp(i),
73                 x = 0;
74                 for k = 1:m1,
75                     x = x + n1(i,k) * n2(k,j) * pppdiv(y,d2(k,j)) * pppdiv(pp(i),d1(i,k))
76                 end
77                 num(i,j)=x,den(i,j)=yij,
78             end
79         end
80         [num,den] = simp(num,den),
81     end
82
83     if indef then
84         num = num*eye()
85         den = den*eye()
86     end
87     s1 = rlist(num,den,s1.dt)
88 endfunction