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