error(number): converting occurrences remaining in all .sce .sci files
[scilab.git] / scilab / modules / cacsd / macros / minreal.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 [a,b,c]=minreal(a,b,c,domaine,tol)
14     //
15
16     [lhs,rhs]=argn(0)
17     select typeof(a)
18     case "state-space" then
19         if lhs<>1 then
20             msg = gettext("%s: Wrong number of output arguments: %d expected.\n")
21             error(msprintf(msg, "minreal", 1))
22         end;
23         select rhs
24         case 1 then
25             istol = %f;
26         case 2 then
27             istol = %t,
28             tol = b,
29         else
30             msg = gettext("%s: Wrong number of input arguments: %d or %d expected.\n");
31             error(msprintf(msg, "minreal", 1, 2))
32         end
33         [a,b,c,d,x0,dom] = a(2:7)
34         if dom == [] then
35             msg = gettext("%s: Argument #%d: Undefined time domain.\n");
36             error(msprintf(msg, "minreal", 1));
37         end
38         domaine="c";
39         if dom<>"c" then
40             domaine="d";
41         end
42     case "constant" then
43         if lhs<>3 then
44             msg = gettext("%s: Wrong number of output arguments: %d expected.\n");
45             error(msprintf(msg, "minreal", 3))
46         end
47         select rhs
48         case 4 then istol = %f
49         case 5 then istol = %t,
50         else
51             msg = gettext("%s: Wrong number of input arguments: %d or %d expected.\n");
52             error(msprintf(msg, "minreal", 4, 5))
53         end
54     else
55         msg = gettext("%s: Argument #%d: Linear state space expected.\n");
56         error(msprintf(msg, "minreal", 1))
57     end;
58     //
59     wc = lyap(a', -b*b', domaine);
60     wo = lyap(a, -c'*c, domaine);
61     if ~istol then
62         [r,n] = equil1(wc,wo);
63     else
64         [r,n] = equil1(wc,wo,tol);
65     end;
66     n1 = n(1);
67     ri = inv(r);
68     r = r(1:n1,:);
69     ri = ri(:,1:n1);
70     a = r*a*ri;
71     b = r*b;
72     c = c*ri;
73     if lhs == 1 then
74         a = syslin(dom,a,b,c,d,r*x0);
75     end
76 endfunction