* Bug #13608 fixed - logm produced an error with complex values. 63/15363/3
Vladislav TRUBKIN [Fri, 10 Oct 2014 09:23:39 +0000 (11:23 +0200)]
Change-Id: I5d898bf856763755799378b278ac9145180e3978

scilab/CHANGES_5.5.X
scilab/modules/elementary_functions/macros/logm.sci
scilab/modules/elementary_functions/tests/nonreg_tests/bug_13608.dia.ref [new file with mode: 0644]
scilab/modules/elementary_functions/tests/nonreg_tests/bug_13608.tst [new file with mode: 0644]

index cea6dd5..ba59f1c 100644 (file)
@@ -60,6 +60,8 @@ Scilab Bug Fixes
 
 * Bug #13605 fixed - harmean returned an inverted result when called with parameters "r" or "c".
 
+* Bug #13608 fixed - logm produced an error with complex values.
+
 * Bug #13673 fixed - Anti-aliasing of xpoly marks did not render correctly.
 
 * Bug #13674 fixed - User .wgetrc configuration file is now by-passed when ATOMS does not use a proxy.
index 25f14b8..071c4ed 100644 (file)
@@ -46,7 +46,7 @@ function x=logm(a)
         end
         x = u * diag(w1) * u';
         if r then
-            if and(s >= 0) then
+            if and(real(s) >= 0) then
                 x = real(x);
             end
         end
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13608.dia.ref b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13608.dia.ref
new file mode 100644 (file)
index 0000000..7074f2d
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 13608 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13608
+//
+// <-- Short Description -->
+// There was an error with complex values.
+value = [0.1+0*%i, 0+0*%i; 0+0*%i, 0.2+0*%i];
+refValue = [-2.3025851, 0; 0, -1.6094379];
+assert_checkalmostequal(refValue, logm(value));
+value = [-0.1-0*%i, 1-0*%i; 0+0*%i, -0.2+0*%i];
+refValue = [-2.3025851 + 3.1415927*%i, -6.9314718; 0, -1.6094379 + 3.1415927*%i];
+assert_checkalmostequal(refValue, logm(value));
+a = [-0.9+%i 0+0*%i; 0+0*%i -0.1-%i];
+assert_checktrue(and(clean(expm(logm(a))-a)==0));
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13608.tst b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13608.tst
new file mode 100644 (file)
index 0000000..b62ff05
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 13608 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13608
+//
+// <-- Short Description -->
+// There was an error with complex values.
+
+value = [0.1+0*%i, 0+0*%i; 0+0*%i, 0.2+0*%i];
+refValue = [-2.3025851, 0; 0, -1.6094379];
+assert_checkalmostequal(refValue, logm(value));
+
+value = [-0.1-0*%i, 1-0*%i; 0+0*%i, -0.2+0*%i];
+refValue = [-2.3025851 + 3.1415927*%i, -6.9314718; 0, -1.6094379 + 3.1415927*%i];
+assert_checkalmostequal(refValue, logm(value));
+
+a = [-0.9+%i 0+0*%i; 0+0*%i -0.1-%i];
+assert_checktrue(and(clean(expm(logm(a))-a)==0));