* Bug #13893 fixed - simp() function did not set a rational denominator at 1 when... 97/17297/3
Charlotte HECQUET [Thu, 8 Oct 2015 13:19:38 +0000 (15:19 +0200)]
Change-Id: Ic742094c7247b31ad86b4d77bd75f42c4014437d

scilab/CHANGES_6.0.X
scilab/modules/overloading/macros/%r_simp.sci [new file with mode: 0644]
scilab/modules/overloading/macros/%s_simp.sci [moved from scilab/modules/polynomials/macros/%s_simp.sci with 67% similarity]
scilab/modules/overloading/tests/nonreg_tests/bug_13893.dia.ref [new file with mode: 0644]
scilab/modules/overloading/tests/nonreg_tests/bug_13893.tst [new file with mode: 0644]
scilab/modules/polynomials/macros/%r_simp.sci [deleted file]

index a8892f8..b5a937b 100644 (file)
@@ -43,6 +43,8 @@ Scilab Bug Fixes
 
 * Bug #13890 fixed - getd did not return loaded symbols in previous scope.
 
+* Bug #13893 fixed - simp() function did not set a rational denominator at 1 when numerator was equal to zero.
+
 * Bug #13894 fixed - Default working directory of the previous session did not work.
 
 * Bug #13907 fixed - Avoids the gray background on the right panel of the palette Browser.
diff --git a/scilab/modules/overloading/macros/%r_simp.sci b/scilab/modules/overloading/macros/%r_simp.sci
new file mode 100644 (file)
index 0000000..8e6d0ae
--- /dev/null
@@ -0,0 +1,19 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) INRIA\r
+// Copyright (C) Samuel GOUGEON - 2015 - sgougeon@free.fr : Bug 13893\r
+//\r
+// This file must be used under the terms of the CeCILL.\r
+// This source file is licensed as described in the file COPYING, which\r
+// you should have received as part of this distribution.  The terms\r
+// are also available at\r
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
+\r
+function h = %r_simp(h)\r
+    // implement complex case\r
+    // 0/den => 0/1\r
+    n = numer(h)\r
+    d = denom(h)\r
+    i = find(clean(n)==0 & clean(d)~=0)\r
+    d(i) = 1\r
+    h = rlist(n, d, h(4))\r
+endfunction\r
@@ -1,13 +1,16 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) INRIA
-//
-// 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.1-en.txt
-
-function [num,den]=%s_simp(num,den)
-    // implement complex case
-
-endfunction
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) INRIA\r
+// Copyright (C) Samuel GOUGEON - 2015 - sgougeon@free.fr : Bug 13893\r
+//\r
+// This file must be used under the terms of the CeCILL.\r
+// This source file is licensed as described in the file COPYING, which\r
+// you should have received as part of this distribution.  The terms\r
+// are also available at\r
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
+\r
+function [num,den] = %s_simp(num,den)\r
+    // implement complex case\r
+    // 0/den => 0/1\r
+    i = find(clean(num)==0 & clean(den)~=0)\r
+    den(i) = 1\r
+endfunction\r
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_13893.dia.ref b/scilab/modules/overloading/tests/nonreg_tests/bug_13893.dia.ref
new file mode 100644 (file)
index 0000000..2e56aef
--- /dev/null
@@ -0,0 +1,18 @@
+//<-- CLI SHELL MODE -->
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 13893 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13893
+//
+// <-- Short Description -->
+// simp() function does not set a rational denominator at 1 when numerator is equal to zero
+r = rlist(0,1+2*%z^2);
+r_res = simp(r);
+assert_checkequal(numer(r_res), 0);
+assert_checkequal(denom(r_res), 1+0*%z);
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_13893.tst b/scilab/modules/overloading/tests/nonreg_tests/bug_13893.tst
new file mode 100644 (file)
index 0000000..6a7c771
--- /dev/null
@@ -0,0 +1,20 @@
+//<-- CLI SHELL MODE -->
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 13893 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13893
+//
+// <-- Short Description -->
+// simp() function does not set a rational denominator at 1 when numerator is equal to zero
+
+r = rlist(0,1+2*%z^2);
+r_res = simp(r);
+assert_checkequal(numer(r_res), 0);
+assert_checkequal(denom(r_res), 1+0*%z);
diff --git a/scilab/modules/polynomials/macros/%r_simp.sci b/scilab/modules/polynomials/macros/%r_simp.sci
deleted file mode 100644 (file)
index 4a105da..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) INRIA
-//
-// 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
-
-function r=%r_simp(h)
-    if simp_mode() == %f then
-        r=h;
-        return;
-    end
-
-    if typeof(h) <> "rational"
-        error(msprintf(gettext("%s : Wrong type for input arguments #%d: A rational expected.\n"), "simp", 1));
-    end
-
-    r=h;
-    if isreal(h) == %f then
-        // implement complex case
-        return;
-    end
-
-    [r(2), r(3)] = simp(r(2), r(3));
-endfunction