* Bug #14223 fixed - det returned an error when it is used with a singular matrix. 21/17421/2
Adeline CARNIS [Mon, 2 Nov 2015 14:20:01 +0000 (15:20 +0100)]
Change-Id: I69172b2c60bced9653955bac5d9d65206acde493

scilab/CHANGES_6.0.X
scilab/modules/linear_algebra/sci_gateway/cpp/sci_det.cpp
scilab/modules/linear_algebra/tests/nonreg_tests/bug_14223.dia.ref [new file with mode: 0644]
scilab/modules/linear_algebra/tests/nonreg_tests/bug_14223.tst [new file with mode: 0644]

index 4cc12c3..5ef655f 100644 (file)
@@ -140,6 +140,8 @@ Scilab Bug Fixes
 
 * Bug #14212 fixed - Scilab 6 did not load array of struct from Scilab 5.5 files correctly
 
+* Bug #14223 fixed - det returned an error when it is used with a singular matrix.
+
 
             Changes between version 5.5.2 and 6.0.0-alpha-1 of Scilab
             =========================================================
index c3b1cb5..63abe91 100644 (file)
@@ -87,7 +87,7 @@ types::Function::ReturnValue sci_det(types::typed_list &in, int _iRetCount, type
 
     int iExponent = 0;
     int iRet = iDetM(pData, pDbl->getCols(), pDblMantissa->getReal(), pDbl->isComplex() ? pDblMantissa->getImg() : NULL, pDblExponent ? &iExponent : NULL);
-    if (iRet != 0)
+    if (iRet < 0)
     {
         Scierror(999, _("%s: LAPACK error n°%d.\n"), "det", iRet);
         return types::Function::Error;
diff --git a/scilab/modules/linear_algebra/tests/nonreg_tests/bug_14223.dia.ref b/scilab/modules/linear_algebra/tests/nonreg_tests/bug_14223.dia.ref
new file mode 100644 (file)
index 0000000..bdb860c
--- /dev/null
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 14223 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14223
+//
+// <-- Short Description -->
+//    det returned an error when it is used with a singular matrix.
+// =============================================================================
+A = [2 4;1 2];
+assert_checkequal(det(A), 0);
diff --git a/scilab/modules/linear_algebra/tests/nonreg_tests/bug_14223.tst b/scilab/modules/linear_algebra/tests/nonreg_tests/bug_14223.tst
new file mode 100644 (file)
index 0000000..afc8dff
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 14223 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14223
+//
+// <-- Short Description -->
+//    det returned an error when it is used with a singular matrix.
+// =============================================================================
+
+A = [2 4;1 2];
+assert_checkequal(det(A), 0);