Bug 3643 fixed, mtlb_eig is now obsolete
Vincent COUVERT [Tue, 10 Mar 2009 15:21:45 +0000 (16:21 +0100)]
Conflicts:

scilab_doc/Matlab_Scilab_dictionary/eig.xml

scilab/CHANGES_5.1.X
scilab/modules/compatibility_functions/help/en_US/mtlb_eig.xml
scilab/modules/compatibility_functions/help/fr_FR/mtlb_eig.xml
scilab/modules/compatibility_functions/macros/mtlb_eig.sci
scilab/modules/m2sci/macros/sci_files/sci_eig.sci
scilab_doc/Matlab_Scilab_dictionary/eig.xml [new file with mode: 0644]

index 731624b..060a13c 100644 (file)
@@ -55,6 +55,9 @@ Internal API:
 Bug fixes:
 ==========
 
+* bug 3643 fixed - Scilab spec function is the equivalent of Matlab function 
+                   (mtlb_eig is now obsolete).
+
 * bug 3944 fixed - ilib_mex_build() wasn't using the content of the  
                   variable tables to compile other files
 * bug 3945 fixed - Error with the help example of library()
index 0a70450..796dd76 100644 (file)
   </refnamediv>
   <refsection>
     <title>Description</title>
-    <para>Matlab <literal>eig</literal> and Scilab <literal>spec</literal> behave differently in some particular cases:</para>
-    <itemizedlist>
-      <listitem>
-        <para>
-       With one input (A) and two outputs (V,D), Matlab and Scilab returned eigen values have opposite signs.
-         </para>
-      </listitem>
-    </itemizedlist>
-    <para>
-    The function <literal>[V,D] = mtlb_eig(A)</literal> is used by
-    <literal>mfile2sci</literal> to replace <literal>&gt;[V,D] = eig(A)</literal>.
-    This function will determine the correct semantic at run time. There is no replacement possibility for it.
-    </para>
-    <para>Caution: <literal>mtlb_eig</literal> has not to be used for hand coded functions.</para>
+    <para>WARNING: This function is obsolete and will be removed in version 5.1.2, please use <link linkend="spec">spec</link> instead.</para>
+  </refsection>
+  <refsection>
+    <title>See Also</title>
+    <simplelist type="inline">
+      <member>
+        <link linkend="spec">spec</link>
+      </member>
+    </simplelist>
   </refsection>
   <refsection>
     <title>Authors</title>
index e4ff522..57b2e78 100644 (file)
   </refnamediv>
   <refsection>
     <title>Description</title>
-    <para>Dans plusieurs cas particuliers, les fonctions <literal>eig</literal> de Matlab et <literal>spec</literal>
-    de Scilab se comportent différemment :</para>
-    <itemizedlist>
-      <listitem>
-        <para>
-        Avec un argument d'entrée (<literal>A</literal>) et deux arguments de sortie (<literal>V</literal>,<literal>D</literal>),
-       les valeurs obtenues dans Scilab et dans Matlab sont de signe opposé.
-        </para>
-      </listitem>
-    </itemizedlist>
-    <para>
-    La fonction <literal>[V,D] = mtlb_eig(A,B)</literal> est utilisée par
-    <literal>mfile2sci</literal> pour remplacer <literal>[V,D] = eig(A)</literal>. Cette fonction va
-    déterminer la sémantique correcte pendant l'exécution. Elle ne peut être remplacée.
-    </para>
-    <para>Attention : <literal>mtlb_eig</literal> ne doit pas être utilisée pour une programmation manuelle.</para>
+    <para>ATTENTION: Cette fonction est obsolète et sera retirée dans la version 5.1.2, veuillez utiliser <link linkend="spec">spec</link> en remplacement.</para>
+  </refsection>
+  <refsection>
+    <title>Voir aussi</title>
+    <simplelist type="inline">
+      <member>
+        <link linkend="spec">spec</link>
+      </member>
+    </simplelist>
   </refsection>
   <refsection>
     <title>Auteurs</title>
index 1477542..4c7f9cf 100644 (file)
@@ -10,6 +10,8 @@
 function [vd,D]=mtlb_eig(A,B)
 // Emulation function for eig() Matlab function
 
+warnobsolete("spec", "5.1.2")
+
 [lhs,rhs]=argn()
 
 if rhs==1 then
@@ -17,9 +19,6 @@ if rhs==1 then
     vd=spec(A)
   else
     [vd,D]=spec(A)
-    if isreal(vd,0) & size(vd,"*")>1 then
-      vd(:,1:2)=-vd(:,1:2)
-    end
   end  
 else
   error(msprintf(gettext("%s: use with %d input argument(s) is not yet implemented.\n"),"mtlb_eig",2));
index b852839..1d8b60a 100644 (file)
@@ -12,7 +12,6 @@ function [tree]=sci_eig(tree)
 // Conversion function for Matlab eig()
 // Input: tree = Matlab funcall tree
 // Ouput: tree = Scilab equivalent for tree
-// Emulation function: mtlb_eig()
 
 // eig(A)
 if rhs==1 then
@@ -21,15 +20,14 @@ if rhs==1 then
   A = convert2double(A)
   tree.rhs=Rhs_tlist(A)
 
+  tree.name="spec"
+  
   // d = eig(A)
   if lhs==1 then
-    tree.name="spec"
     tree.lhs(1).dims=list(A.dims(1),1)
     tree.lhs(1).type=Type(Double,Unknown)
   // [V,D] = eig(A)
   else
-    set_infos(msprintf(gettext("mtlb_eig() called because Scilab and Matlab value do not always match for %s."),tree.lhs(1).name),0)
-    tree.name="mtlb_eig"
     tree.lhs(1).dims=list(A.dims(1),A.dims(1))
     tree.lhs(1).type=Type(Double,Unknown)
     tree.lhs(2).dims=list(A.dims(1),A.dims(1))
diff --git a/scilab_doc/Matlab_Scilab_dictionary/eig.xml b/scilab_doc/Matlab_Scilab_dictionary/eig.xml
new file mode 100644 (file)
index 0000000..e293976
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ -->
+<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" version="5.0-subset Scilab" xml:id="eig">
+  <refnamediv>
+    <refname>eig</refname>
+    <refpurpose>(Matlab function) Find eigenvalues and eigenvectors</refpurpose>
+  </refnamediv>
+  <refsection>
+    <title>Matlab/Scilab equivalent</title>
+    <para>
+      <informaltable border="1" pgwide="1">
+        <tr>
+          <td align="center">
+            <emphasis role="bold">Matlab</emphasis>
+          </td>
+          <td align="center">
+            <emphasis role="bold">Scilab</emphasis>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <programlisting role="example"><![CDATA[
+eig
+]]></programlisting>
+          </td>
+          <td>
+            <programlisting role="example"><![CDATA[
+spec
+bdiag
+]]></programlisting>
+          </td>
+        </tr>
+      </informaltable>
+    </para>
+  </refsection>
+  <refsection>
+    <title>Particular cases</title>
+    <variablelist>
+      <varlistentry>
+        <term>eig(A,'nobalance')</term>
+        <listitem>
+          <para>There is no Scilab equivalent for <emphasis role="bold">'nobalance'</emphasis> option. See examples...</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>eig(A,B,flag)</term>
+        <listitem>
+          <para>There is no Scilab equivalent for <emphasis role="bold">flag</emphasis>.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsection>
+  <refsection>
+    <title>Examples</title>
+    <informaltable border="1" pgwide="1">
+      <tr>
+        <td align="center">
+          <emphasis role="bold">Matlab</emphasis>
+        </td>
+        <td align="center">
+          <emphasis role="bold">Scilab</emphasis>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <programlisting role="example"><![CDATA[
+d = eig(A,'balance')
+[V,D] = eig(A,'balance')
+d = eig(A,B)
+[V,D] = eig(A,B)
+]]></programlisting>
+        </td>
+        <td>
+          <programlisting role="example"><![CDATA[
+d = spec(A)
+[V,D] = bdiag(A+%i,1/%eps)
+[al,be] = spec(A); d = al./be;
+[al,be,V] = spec(A); D = spec(al./be);
+]]></programlisting>
+        </td>
+      </tr>
+    </informaltable>
+  </refsection>
+</refentry>