* Bug #5539 fixed - sylv() doc fix 04/11204/5
Paul BIGNIER [Wed, 3 Apr 2013 12:36:53 +0000 (14:36 +0200)]
The discrete-time Sylvester equation exists in two versions (with + and -).
The wrong one was documented.

Included a test

Change-Id: Ibd9e73532a11b5984ffa59df6ec0eec1745df4af

scilab/CHANGES_5.5.X
scilab/modules/cacsd/tests/unit_tests/sylv.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/unit_tests/sylv.tst [new file with mode: 0644]
scilab/modules/linear_algebra/help/en_US/pencil/sylv.xml

index 614f5d6..d74ab47 100644 (file)
@@ -51,6 +51,7 @@ Bug fixes
 
 * paramfplot2d: When input argument theta was column vector, an error occurred.
 
+* Bug #5539 fixed - sylv() help page was wrong in the discrete-time case.
 
 * Bug #6693 fixed - modulo did not accept polynomial inputs. Help page was not updated.
 
@@ -58,7 +59,7 @@ Bug fixes
 
 * Bug #8667 fixed - Handling of %nan in functions min,max,median is not correctly documented.
 
-* Bug #8824 fixed - taucs_chfact returned a segfault (not the case in mode nwni).
+* Bug #8824 fixed - taucs_chfact returned a segfault (not the case in mode nwni)
 
 * Bug #10862 fixed - Add a without internet connection installation
                      global configuration on the installer
diff --git a/scilab/modules/cacsd/tests/unit_tests/sylv.dia.ref b/scilab/modules/cacsd/tests/unit_tests/sylv.dia.ref
new file mode 100644 (file)
index 0000000..4efb106
--- /dev/null
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- ENGLISH IMPOSED -->
+// Run with test_run('cacsd', 'sylv', ['no_check_error_output']);
+A = rand(4, 4); C = rand(4, 3); B = rand(3, 3);
+// Solve continuous-time Sylvester equation: A*X+X*B = C
+X = sylv(A, B, C, 'c');
+expected_norm = 1.D-16;
+if norm(A*X+X*B-C)-expected_norm > 1.D-15 then bugmes();quit;end
+// Solve discrete-time Sylvester equation: A*X*B+X = C
+X = sylv(A, B, C, 'd');
+if norm(A*X*B+X-C)-expected_norm > 1.D-15 then bugmes();quit;end
diff --git a/scilab/modules/cacsd/tests/unit_tests/sylv.tst b/scilab/modules/cacsd/tests/unit_tests/sylv.tst
new file mode 100644 (file)
index 0000000..6c7eecf
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- ENGLISH IMPOSED -->
+
+// Run with test_run('cacsd', 'sylv', ['no_check_error_output']);
+
+A = rand(4, 4); C = rand(4, 3); B = rand(3, 3);
+
+// Solve continuous-time Sylvester equation: A*X+X*B = C
+X = sylv(A, B, C, 'c');
+
+expected_norm = 1.D-16;
+
+if norm(A*X+X*B-C)-expected_norm > 1.D-15 then pause,end
+
+// Solve discrete-time Sylvester equation: A*X*B+X = C
+X = sylv(A, B, C, 'd');
+
+if norm(A*X*B+X-C)-expected_norm > 1.D-15 then pause,end
index f42e7a4..adf9691 100644 (file)
 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="sylv">
     <refnamediv>
         <refname>sylv</refname>
-        <refpurpose>Sylvester equation.  </refpurpose>
+        <refpurpose>Sylvester equation.</refpurpose>
     </refnamediv>
     <refsynopsisdiv>
         <title>Calling Sequence</title>
-        <synopsis>sylv(A,B,C,flag)</synopsis>
+        <synopsis>sylv(A, B, C, flag)</synopsis>
     </refsynopsisdiv>
     <refsection>
         <title>Arguments</title>
     <refsection>
         <title>Description</title>
         <para>
-            <literal>X= sylv(A,B,C,'c')</literal> computes <literal>X</literal>, solution
+            <literal>X= sylv(A, B, C, 'c')</literal> computes <literal>X</literal>, solution
             of the "continuous time" Sylvester equation
         </para>
-        <programlisting role=""><![CDATA[ 
-A*X+X*B=C 
+        <programlisting role=""><![CDATA[
+A*X+X*B = C
  ]]></programlisting>
         <para>
-            <literal>X=sylv(A,B,C,'d')</literal> computes <literal>X</literal>, solution
+            <literal>X=sylv(A, B, C, 'd')</literal> computes <literal>X</literal>, solution
             of the "discrete time" Sylvester equation
         </para>
-        <programlisting role=""><![CDATA[ 
-A*X*B-X=C
+        <programlisting role=""><![CDATA[
+A*X*B+X = C
  ]]></programlisting>
     </refsection>
     <refsection>
         <title>Examples</title>
-        <programlisting role="example"><![CDATA[ 
-A=rand(4,4);C=rand(4,3);B=rand(3,3);
-X = sylv(A,B,C,'c');
+        <programlisting role="example"><![CDATA[
+A = rand(4, 4); C = rand(4, 3); B = rand(3, 3);
+X = sylv(A, B, C, 'c');
 norm(A*X+X*B-C)
-X=sylv(A,B,C,'d') 
+X = sylv(A, B, C, 'd');
 norm(A*X*B-X-C)
  ]]></programlisting>
     </refsection>