* Bug #13750 fixed - Calling ss2ss function with flag = 2 returned an error. 43/17043/2
Adeline CARNIS [Mon, 17 Aug 2015 13:33:16 +0000 (15:33 +0200)]
Change-Id: I1b26deb55c87f835d9121046435fd8d9b27b1b6a

scilab/CHANGES_6.0.X
scilab/modules/cacsd/macros/ss2ss.sci
scilab/modules/cacsd/tests/nonreg_tests/bug_13750.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/nonreg_tests/bug_13750.tst [new file with mode: 0644]

index b4ff4d7..9e6ad88 100644 (file)
@@ -7,10 +7,12 @@ Scilab Bug Fixes
 
 * Bug #13709 fixed - unique function sometimes returned wrong index values.
 
-* Bug #13872 fixed - Non regression test added for unique function (the indices returned were wrong)
+* Bug #13750 fixed - Calling ss2ss function with flag = 2 returned an error.
 
 * Bug #13780 fixed - size with two input and output arguments did not return an error.
 
+* Bug #13872 fixed - Non regression test added for unique function (the indices returned were wrong)
+
 * Bug #14020 fixed - Incorrect carriage return ascii code.
 
 * Bug #14025 fixed - head_comments did not take into account compiled functions.
index cbf3351..e620333 100644 (file)
@@ -84,10 +84,11 @@ function [Sl1,right,left]=ss2ss(Sl,T,F,G,flag)
             // We have then the following property
             // Sl1 equiv left*sysdiag(sys*right,eye(p,p)))
             //
+            p = size(C,"r");
             A1=A+B*F+G*C+G*D*F;
+            B1=[B+G*D,-G];
             C1=C+ D*F;
             D1=[D,zeros(p,p)];
-            B1=[B+G*D,-G];
             A1=inv(T)*A1*T;B1=inv(T)*B1;C1=C1*T;D1=D1
             Sl1=syslin(Sl(7),A1,B1,C1,D1);
             right=syslin(Sl(7),A+B*F,B,F,eye(F*B));
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_13750.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_13750.dia.ref
new file mode 100644 (file)
index 0000000..e215dc8
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 13750 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13750
+//
+// <-- Short Description -->
+//    Calling ss2ss with flag = 2 returned an error. The variable p was missing.
+// =============================================================================
+in=1;m=2;n=2;
+sys=ssrand(in,m,n);
+F1=rand(m,n);
+G=rand(n,in);
+[sys1,right,left]=ss2ss(sys,rand(n,n),F1,G,2);
+res=clean(ss2tf(sys1) - ss2tf(left*sysdiag(sys*right,eye(1,1))));
+assert_checkalmostequal(coeff(res.num), zeros(size(res,"r"), size(res, "c")), [], %eps);
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_13750.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_13750.tst
new file mode 100644 (file)
index 0000000..3523325
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 13750 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13750
+//
+// <-- Short Description -->
+//    Calling ss2ss with flag = 2 returned an error. The variable p was missing.
+// =============================================================================
+
+
+in=1;m=2;n=2;
+sys=ssrand(in,m,n);
+F1=rand(m,n);
+G=rand(n,in);
+[sys1,right,left]=ss2ss(sys,rand(n,n),F1,G,2);
+res=clean(ss2tf(sys1) - ss2tf(left*sysdiag(sys*right,eye(1,1))));
+assert_checkalmostequal(coeff(res.num), zeros(size(res,"r"), size(res, "c")), [], %eps);