changeset 26592:c0fa4a9eef95

Ensure boolean value when checking sparse matrices for symmetry/hermiticity. * scripts/linear-algebra/ishermitian.m, cripts/linear-algebra/issymmetric.m: In case of sparse matrix input, return a single 1 byte boolean value, not a 25 byte sparse matrix with exactly one entry.
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Tue, 22 Jan 2019 07:06:37 +0100
parents 26a3861a34b6
children ec3c4f31823b
files scripts/linear-algebra/ishermitian.m scripts/linear-algebra/issymmetric.m
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/linear-algebra/ishermitian.m	Mon Jan 21 22:34:03 2019 -0800
+++ b/scripts/linear-algebra/ishermitian.m	Tue Jan 22 07:06:37 2019 +0100
@@ -82,7 +82,7 @@
   if (strcmp (skewopt, "nonskew"))
     if (tol == 0)
       ## check for exact symmetry
-      retval = ! any ((A != A')(:));
+      retval = full (! any ((A != A')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -94,7 +94,7 @@
   else
     ## skew-Hermitian
     if (tol == 0)
-      retval = ! any ((A != -A')(:));
+      retval = full (! any ((A != -A')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -114,7 +114,7 @@
 %!assert (ishermitian ([1, 2; 2, 1]))
 %!assert (ishermitian ([1, 2.1; 2, 1.1], 0.2))
 %!assert (ishermitian ([1, -2i; 2i, 1]))
-%!assert (ishermitian (speye (100)))
+%!assert (ishermitian (speye (100)), true)  # Return full logical value.
 %!assert (ishermitian (logical (eye (2))))
 %!assert (! ishermitian (logical ([1 1; 0 1])))
 %!assert (ishermitian (logical ([1 1; 0 1]), 0.5))
--- a/scripts/linear-algebra/issymmetric.m	Mon Jan 21 22:34:03 2019 -0800
+++ b/scripts/linear-algebra/issymmetric.m	Tue Jan 22 07:06:37 2019 +0100
@@ -81,7 +81,7 @@
   if (strcmp (skewopt, "nonskew"))
     if (tol == 0)
       ## check for exact symmetry
-      retval = ! any ((A != A.')(:));
+      retval = full (! any ((A != A.')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -93,7 +93,7 @@
   else
     ## skew symmetry
     if (tol == 0)
-      retval = ! any ((A != -A.')(:));
+      retval = full (! any ((A != -A.')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -113,7 +113,7 @@
 %!assert (issymmetric ([1, 2; 2, 1]))
 %!assert (issymmetric ([1, 2.1; 2, 1.1], 0.2))
 %!assert (issymmetric ([1, 2i; 2i, 1]))
-%!assert (issymmetric (speye (100)))
+%!assert (issymmetric (speye (100)), true)  # Return full logical value.
 %!assert (issymmetric (logical (eye (2))))
 %!assert (! issymmetric (logical ([1 1; 0 1])))
 %!assert (issymmetric (logical ([1 1; 0 1]), 0.5))