Bug #10921: For ill-conditioned matrix, the inv function prints a wrong value of... 78/8278/4
Adeline CARNIS [Tue, 24 Jul 2012 10:16:01 +0000 (12:16 +0200)]
Change-Id: I5290df5db72bae1fde70946f99c55b784e96d6f4

scilab/CHANGES_5.4.X
scilab/modules/linear_algebra/src/fortran/writebuf.f
scilab/modules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref [new file with mode: 0644]
scilab/modules/linear_algebra/tests/nonreg_tests/bug_10921.tst [new file with mode: 0644]

index b0b0d53..27c613f 100644 (file)
@@ -138,6 +138,9 @@ Bug Fixes
 * Bug #10915 fixed - It was not possible to select several files when using
                      button "Open file" in console toolbar.
 
+* Bug #10921 fixed - For ill-conditioned matrix, the inv function printed a
+                     wrong value of rcond.
+
 * Bug #11048 fixed - In SciNotes, comment/uncomment actions did not work
                      correctly.
 
index 0bf5637..ff0d44c 100644 (file)
@@ -34,7 +34,7 @@ c     ====================================
       character*(*) buffer
       double precision r
       
-      write(buffer(1:13),'(1pd13.4)') rcond
+      write(buffer(1:13),'(1pd13.4)') r
       
       end
 c     ====================================      
diff --git a/scilab/modules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref b/scilab/modules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref
new file mode 100644 (file)
index 0000000..1786eaf
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
+// <-- Non-regression test for bug 10921 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10921
+//
+// <-- Short Description -->
+//    For ill-conditioned matrix, inv() prints a wrong value of rcond
+M = [1 0; 0 10^(-8)];
+inv(M);
+Warning :
+matrix is close to singular or badly scaled. rcond =    1.0000D-08
+
+A=diag([1:10]);
+A(1,1) = 10^-8;
+inv(A);
+Warning :
+matrix is close to singular or badly scaled. rcond =    1.0000D-09
+
diff --git a/scilab/modules/linear_algebra/tests/nonreg_tests/bug_10921.tst b/scilab/modules/linear_algebra/tests/nonreg_tests/bug_10921.tst
new file mode 100644 (file)
index 0000000..fa93a6b
--- /dev/null
@@ -0,0 +1,28 @@
+// =============================================================================\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS\r
+//\r
+//  This file is distributed under the same license as the Scilab package.\r
+// =============================================================================\r
+\r
+// <-- CLI SHELL MODE -->\r
+\r
+// <-- ENGLISH IMPOSED -->\r
+\r
+// <-- Non-regression test for bug 10921 -->\r
+//\r
+// <-- Bugzilla URL -->\r
+// http://bugzilla.scilab.org/show_bug.cgi?id=10921\r
+//\r
+// <-- Short Description -->\r
+//    For ill-conditioned matrix, inv() prints a wrong value of rcond\r
+\r
+M = [1 0; 0 10^(-8)];\r
+inv(M);\r
+\r
+A=diag([1:10]);\r
+A(1,1) = 10^-8;\r
+inv(A);\r
+\r
+\r
+\r\r