Rationnal simplification for complex polynoms updated. 12/18512/4
Adeline CARNIS [Thu, 25 Aug 2016 10:28:24 +0000 (12:28 +0200)]
test_run polynomials bug_13192

Change-Id: I04416ba2806ba15a492bf29d842f16faced61742

scilab/modules/polynomials/macros/%p_simp.sci
scilab/modules/polynomials/tests/nonreg_tests/bug_13192.dia.ref [deleted file]
scilab/modules/polynomials/tests/nonreg_tests/bug_13192.tst

index d370b70..d5415f5 100644 (file)
@@ -14,25 +14,17 @@ function [num, den] = %p_simp(num, den)
     // Called when num or/and den are complex-encoded
 
     // Special cases when real or imaginary parts are both null:
-    // http://bugzilla.scilab.org/8493
-    if ~isreal(num)
-        if imag(num)==0 then
-            num = real(num)
-        else
-        end
-    end
-    if ~isreal(den)
-        if imag(den)==0 then
-            den = real(den)
-        else
-        end
-    end
-    // Case of both real null parts
-    if ~isreal(num) && real(num)==0 && ~isreal(den) && real(den)==0 then
-        num = imag(num)
-        den = imag(den)
-    end
-    if isreal(num) && isreal(den) then
-        [num, den] = simp(num, den)
-    end
+    //   http://bugzilla.scilab.org/8493
+
+    //   Case of both real null parts
+    s = real(num)==0 & real(den)==0
+    [tmpN,tmpD] = simp(imag(num(s)), imag(den(s)))
+    num(s) = tmpN
+    den(s) = tmpD
+
+    //   Case of both imag null parts
+    s = imag(num)==0 & imag(den)==0
+    [tmpN,tmpD] = simp(real(num(s)), real(den(s)))
+    num(s) = tmpN
+    den(s) = tmpD
 endfunction
diff --git a/scilab/modules/polynomials/tests/nonreg_tests/bug_13192.dia.ref b/scilab/modules/polynomials/tests/nonreg_tests/bug_13192.dia.ref
deleted file mode 100644 (file)
index 2fe3372..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2014 - Scilab Enterprises - Adeline CARNIS
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- CLI SHELL MODE -->
-//
-// <-- Non-regression test for bug 13192 -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=13192
-//
-// <-- Short Description -->
-// Horner function returned an error message when the input arguments did not
-// have the same size.
-s = %s;
-H = [1/s; 1/s; 1/(s+1)];
-f = [1+%i 1/(1-s)];
-expectedN = [1 1-5*s+10*s^2-10*s^3+5*s^4-s^5; 1 1-5*s+10*s^2-10*s^3+5*s^4-s^5; 1 1-5*s+10*s^2-10*s^3+5*s^4-s^5];
-expectedD = [1+%i 1-4*s+6*s^2-4*s^3+s^4; 1+%i 1-4*s+6*s^2-4*s^3+s^4; 2+%i 2-9*s+16*s^2-14*s^3+6*s^4-s^5];
-expected = expectedN./expectedD;
-res = horner(H,f);
-assert_checkequal(res, expected);
index 47d177c..3358621 100644 (file)
@@ -6,6 +6,7 @@
 // =============================================================================
 //
 // <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->   // the test is not about the display
 //
 // <-- Non-regression test for bug 13192 -->
 //
 // http://bugzilla.scilab.org/show_bug.cgi?id=13192
 //
 // <-- Short Description -->
-// Horner function returned an error message when the input arguments did not
-// have the same size.
+// horner(rationals_column, rationals_row) sometimes failed
 
 s = %s;
 H = [1/s; 1/s; 1/(s+1)];
 f = [1+%i 1/(1-s)];
-expectedN = [1 1-5*s+10*s^2-10*s^3+5*s^4-s^5; 1 1-5*s+10*s^2-10*s^3+5*s^4-s^5; 1 1-5*s+10*s^2-10*s^3+5*s^4-s^5];
-expectedD = [1+%i 1-4*s+6*s^2-4*s^3+s^4; 1+%i 1-4*s+6*s^2-4*s^3+s^4; 2+%i 2-9*s+16*s^2-14*s^3+6*s^4-s^5];
-expected = expectedN./expectedD;
-res = horner(H,f);
-assert_checkequal(res, expected);
+expectedN = [ 1 1-%s ; 1 1-%s ; 1 %s-1];
+expectedD = [ 1+%i 1 ; 1+%i 1 ; 2+%i %s-2];
+assert_checkequal(horner(H,f), expectedN./expectedD);