* Bug #13511 invalid - passing doubles to lcm, gcd and bezout work 98/15398/3
Paul Bignier [Fri, 17 Oct 2014 13:24:48 +0000 (15:24 +0200)]
 * For lcm and gcd, a double argument is treated as if it was an int32, as described in the help
 * For bezout, it is treated as a null degree polynomial.

Change-Id: I3052eacfcd3d64580ce2b9d5004907bdf7b502bf

scilab/modules/polynomials/help/en_US/bezout.xml
scilab/modules/polynomials/help/fr_FR/bezout.xml
scilab/modules/polynomials/tests/nonreg_tests/bug_13511.dia.ref [new file with mode: 0644]
scilab/modules/polynomials/tests/nonreg_tests/bug_13511.tst [new file with mode: 0644]

index fdbe231..6e01106 100644 (file)
@@ -25,7 +25,7 @@
             <varlistentry>
                 <term>p1, p2</term>
                 <listitem>
-                    <para>two real polynomials or two integer scalars (type equal to 8)</para>
+                    <para>two real polynomials or two integer scalars (type equal to 1, 2 or 8)</para>
                 </listitem>
             </varlistentry>
             <varlistentry>
         <para>
             <literal>p1*U(1,2)</literal> (or <literal>-p2*U(2,2)</literal>)
         </para>
+        <para>
+            If <literal>p1</literal> or <literal>p2</literal> are given as doubles (type 1), then they are treated as
+            null degree polynomials.
+        </para>
     </refsection>
     <refsection>
         <title>Examples</title>
@@ -75,6 +79,15 @@ clean([p1 p2]*U)
 thelcm = p1*U(1,2)
 lcm([p1 p2])
 
+// Double case
+i1 = 2*3^5;
+i2 = 2^3*3^2;
+[thegcd,U] = bezout(i1, i2)
+V = [2^2*3^5 2^3*3^2 2^2*3^4*5];
+[thegcd,U] = gcd(V)
+V*U
+lcm(V)
+
 // Integer case
 i1 = int32(2*3^5);
 i2 = int32(2^3*3^2);
index 0611f09..5603c00 100644 (file)
@@ -14,7 +14,7 @@
             <varlistentry>
                 <term>p1, p2  </term>
                 <listitem>
-                    <para>deux polynômes réels ou deux entiers (type égal à 8)
+                    <para>deux polynômes réels ou deux entiers (type égal à 1, 2 ou 8)
                     </para>
                 </listitem>
             </varlistentry>
         <para>
             <literal>p1*U(1,2)</literal> (ou <literal>-p2*U(2,2)</literal>)
         </para>
+        <para>
+            Si <literal>p1</literal> ou <literal>p2</literal> sont donnés comme des flottants (type 1), alors ils sont traités
+            comme des polynômes de degré nul.
+        </para>
     </refsection>
     <refsection>
         <title>Exemples</title>
-        <programlisting role="example"><![CDATA[ 
-// cas des polynômes
-x=poly(0,'x');
-p1=(x+1)*(x-3)^5;p2=(x-2)*(x-3)^3;
-[pgcd,U]=bezout(p1,p2) 
+        <programlisting role="example"><![CDATA[
+// Cas des polynômes
+x = poly(0,'x');
+p1 = (x+1)*(x-3)^5;
+p2 = (x-2)*(x-3)^3;
+[pgcd,U] = bezout(p1,p2)
 det(U)
 clean([p1,p2]*U)
-ppcm=p1*U(1,2)
+ppcm = p1*U(1,2)
 lcm([p1,p2])
 
-// cas des entiers
-i1=int32(2*3^5); i2=int32(2^3*3^2);
-[thegcd,U]=bezout(i1,i2) 
-V=int32([2^2*3^5, 2^3*3^2,2^2*3^4*5]);
-[thegcd,U]=gcd(V)
+// Cas des doubles
+i1 = 2*3^5;
+i2 = 2^3*3^2;
+[thegcd, U] = bezout(i1, i2)
+V = [2^2*3^5 2^3*3^2 2^2*3^4*5];
+[thegcd, U] = gcd(V)
+V*U
+lcm(V)
+
+// Cas des entiers
+i1 = int32(2*3^5);
+i2 = int32(2^3*3^2);
+[thegcd, U] = bezout(i1, i2)
+V = int32([2^2*3^5 2^3*3^2 2^2*3^4*5]);
+[thegcd, U] = gcd(V)
 V*U
 lcm(V)
  ]]></programlisting>
diff --git a/scilab/modules/polynomials/tests/nonreg_tests/bug_13511.dia.ref b/scilab/modules/polynomials/tests/nonreg_tests/bug_13511.dia.ref
new file mode 100644 (file)
index 0000000..d5828b2
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 13511 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13511
+//
+// <-- Short Description -->
+// lcm used with doubles returned wrong type values,
+// bezout help did not mention doubles.
+assert_checkequal(lcm([96 6250 10000 18700]), int32(56100000));
+[P, U] = bezout(3.5, 4.2);
+assert_checkequal(coeff(P), 1);
+assert_checkalmostequal(coeff(U), [0 4.2; 1/4.2 -3.5]);
diff --git a/scilab/modules/polynomials/tests/nonreg_tests/bug_13511.tst b/scilab/modules/polynomials/tests/nonreg_tests/bug_13511.tst
new file mode 100644 (file)
index 0000000..113adf7
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 13511 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13511
+//
+// <-- Short Description -->
+// lcm used with doubles returned wrong type values,
+// bezout help did not mention doubles.
+
+assert_checkequal(lcm([96 6250 10000 18700]), int32(56100000));
+
+[P, U] = bezout(3.5, 4.2);
+assert_checkequal(coeff(P), 1);
+assert_checkalmostequal(coeff(U), [0 4.2; 1/4.2 -3.5]);