* Bug 15184 refixed: inequalities with complex numbers 72/19372/5
Samuel GOUGEON [Mon, 14 Aug 2017 15:14:16 +0000 (17:14 +0200)]
 * http://bugzilla.scilab.org/15184
 * Followup of https://codereview.scilab.org/#/c/19340/
 * <=, >= and > comparisons were unfixed.
 * Returning %F by default was not convenient: See the rational @
   http://mailinglists.scilab.org/Bug-15184-tp4036857p4036864.html

Change-Id: I45ca915f40f491eb79b2545fb4d1a1848e14bcda

scilab/modules/helptools/data/configuration/scilab_macros.txt
scilab/modules/overloading/macros/%s_1_s.sci
scilab/modules/overloading/macros/%s_2_s.sci
scilab/modules/overloading/macros/%s_3_s.sci
scilab/modules/overloading/macros/%s_4_s.sci
scilab/modules/overloading/tests/nonreg_tests/bug_15184.dia.ref [deleted file]
scilab/modules/overloading/tests/nonreg_tests/bug_15184.tst

index c2b5f5a..e295e14 100644 (file)
@@ -1,8 +1,8 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) INRIA
-// Copyright (C) 2012 - 2016 - Scilab Enterprises
 // Copyright (C) 2017 - Samuel GOUGEON
 //
+// Copyright (C) 2012 - 2016 - Scilab Enterprises
+//
 // This file is hereby licensed under the terms of the GNU GPL v2.0,
 // pursuant to article 5.3.4 of the CeCILL v.2.1.
 // This file was originally licensed under the terms of the CeCILL v2.1,
 // along with this program.
 
 function TF = %s_1_s(A, B)
-    TF=%f
     // Possible case: all components of both A and B have both strictly null
     // imaginary parts
     if isreal(A, 0) & isreal(B,0) then
         TF = real(A) < real(B)
+    else
+        if isdef("%s_1_s_custom") & type(%s_1_s_custom)==13
+            TF = %s_1_s_custom(A,B);
+        else
+            msg = _("Complex comparison not supported. Please define %s_1_s_custom() or check your code.");
+            error(msg);
+        end
     end
 endfunction
index 87a0c05..a2b15fa 100644 (file)
@@ -1,6 +1,8 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2017 - Samuel GOUGEON
 //
+// Copyright (C) 2012 - 2016 - Scilab Enterprises
+//
 // This file is hereby licensed under the terms of the GNU GPL v2.0,
 // pursuant to article 5.3.4 of the CeCILL v.2.1.
 // This file was originally licensed under the terms of the CeCILL v2.1,
@@ -13,5 +15,12 @@ function TF = %s_2_s(A, B)
     // imaginary parts
     if isreal(A, 0) & isreal(B,0) then
         TF = real(A) > real(B)
+    else
+        if isdef("%s_2_s_custom") & type(%s_2_s_custom)==13
+            TF = %s_2_s_custom(A,B);
+        else
+            msg = _("Complex comparison not supported. Please define %s_2_s_custom() or check your code.");
+            error(msg);
+        end
     end
 endfunction
index 11afe09..e13a22a 100644 (file)
@@ -1,6 +1,8 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2017 - Samuel GOUGEON
 //
+// Copyright (C) 2012 - 2016 - Scilab Enterprises
+//
 // This file is hereby licensed under the terms of the GNU GPL v2.0, pursuant
 // to article 5.3.4 of the CeCILL v.2.1.
 // This file was originally licensed under the terms of the CeCILL v2.1, and
@@ -13,5 +15,12 @@ function TF = %s_3_s(A, B)
     // imaginary parts
     if isreal(A, 0) & isreal(B,0) then
         TF = real(A) <= real(B)
+    else
+        if isdef("%s_3_s_custom") & type(%s_3_s_custom)==13
+            TF = %s_3_s_custom(A,B);
+        else
+            msg = _("Complex comparison not supported. Please define %s_3_s_custom() or check your code.");
+            error(msg);
+        end
     end
 endfunction
index 7ab13c8..97011c1 100644 (file)
@@ -1,6 +1,8 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2017 - Samuel GOUGEON
 //
+// Copyright (C) 2012 - 2016 - Scilab Enterprises
+//
 // This file is hereby licensed under the terms of the GNU GPL v2.0, pursuant
 // to article 5.3.4 of the CeCILL v.2.1.
 // This file was originally licensed under the terms of the CeCILL v2.1, and
@@ -13,5 +15,12 @@ function TF = %s_4_s(A, B)
     // imaginary parts
     if isreal(A, 0) & isreal(B,0) then
         TF = real(A) >= real(B)
+    else
+        if isdef("%s_4_s_custom") & type(%s_4_s_custom)==13
+            TF = %s_4_s_custom(A,B);
+        else
+            msg = _("Complex comparison not supported. Please define %s_4_s_custom() or check your code.");
+            error(msg);
+        end
     end
 endfunction
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_15184.dia.ref b/scilab/modules/overloading/tests/nonreg_tests/bug_15184.dia.ref
deleted file mode 100644 (file)
index c47610c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-//<-- CLI SHELL MODE -->
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2017 - Scilab Enterprises - Cedric Delamarre
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- Non-regression test for bug 15184 -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=15184
-//
-// <-- Short Description -->
-// comparisons of complex numbers: a = 1 + %i;  a<2  crashes Scilab
-a = 1 + %i;
-assert_checkequal(a < 2, %f);
index b005079..f78a633 100644 (file)
@@ -1,11 +1,15 @@
-//<-- CLI SHELL MODE -->
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2017 - Scilab Enterprises - Cedric Delamarre
+// Copyright (C) 2017 - Samuel GOUGEON
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 //
+// <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
+// <-- NO CHECK REF -->
+//
 // <-- Non-regression test for bug 15184 -->
 //
 // <-- Bugzilla URL -->
@@ -15,4 +19,7 @@
 // comparisons of complex numbers: a = 1 + %i;  a<2  crashes Scilab
 
 a = 1 + %i;
-assert_checkequal(a < 2, %f);
+assert_checkerror("a<2", "Complex comparison not supported. Please define %s_1_s_custom() or check your code.");
+assert_checkerror("a<=2", "Complex comparison not supported. Please define %s_3_s_custom() or check your code.");
+assert_checkerror("a>2", "Complex comparison not supported. Please define %s_2_s_custom() or check your code.");
+assert_checkerror("a>=2", "Complex comparison not supported. Please define %s_4_s_custom() or check your code.");