* Bug 15924 fixed: sparse inequality to 0 yielded a wrong result 91/20691/6
St├ęphane Mottelet [Mon, 14 Jan 2019 10:12:25 +0000 (11:12 +0100)]
http://bugzilla.scilab.org/show_bug.cgi?id=15924

Change-Id: I96e9e3fdaa22d31f89ff4742fda7d077fa6bf23f

scilab/CHANGES.md
scilab/modules/ast/src/cpp/types/sparse.cpp
scilab/modules/ast/tests/nonreg_tests/bug_15924.tst [new file with mode: 0644]

index 7c3880a..cd0e4f2 100644 (file)
@@ -670,6 +670,7 @@ Known issues
 * [#15890](http://bugzilla.scilab.org/show_bug.cgi?id=15890): `evstr` sometimes yielded some `+[]` warnings.
 * [#15907](http://bugzilla.scilab.org/show_bug.cgi?id=15907): `filter` was corrupting its input state array
 * [#15920](http://bugzilla.scilab.org/show_bug.cgi?id=15920): genlib() did not regenerate a missing .bin if the .sci was unchanged (Scilab 6 regression)
+* [#15924](http://bugzilla.scilab.org/show_bug.cgi?id=15924): sparse inequality to 0 yielded a wrong result.
 
 
 ### Bugs fixed in 6.0.1:
index 2c22f10..57ea4b4 100644 (file)
@@ -2817,7 +2817,7 @@ SparseBool* Sparse::newLessOrEqual(Sparse &o)
         outputRowCol(rowcolL.data());
 
         double r = o.get(0, 0);
-        if (r > 0)
+        if (r >= 0)
         {
             ret->setTrue(true);
         }
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_15924.tst b/scilab/modules/ast/tests/nonreg_tests/bug_15924.tst
new file mode 100644 (file)
index 0000000..b8b3d78
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 15924 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/15924
+//
+// <-- Short Description -->
+// sparse inequality to 0 yields a wrong result
+
+assert_checkequal(sparse([1 0;0 -1])<=0,sparse([%f %t;%t %t]));
+assert_checkequal(sparse([1 0;0 -1])>=0,sparse([%t %t;%t %f]));
+