diff scripts/linear-algebra/logm.m @ 29770:4778b21b1386 stable

expm.m, logm.m: Use function "isdiag" to detect if input is a diagonal matrix (bug #60738). * scripts/linear-algebra/expm.m, scripts/linear-algebra/logm.m: Use function "isdiag" to detect if input is a diagonal matrix. Add tests. * scripts/linear-algebra/isdiag.m: Add test.
author Markus Mützel <markus.muetzel@gmx.de>
date Thu, 17 Jun 2021 18:23:26 +0200
parents fe06c183cc4e
children 42dc5cf93f83 20380c9bed30
line wrap: on
line diff
--- a/scripts/linear-algebra/logm.m	Tue Jun 15 11:41:27 2021 +1000
+++ b/scripts/linear-algebra/logm.m	Thu Jun 17 18:23:26 2021 +0200
@@ -63,7 +63,7 @@
   if (isscalar (A))
     s = log (A);
     return;
-  elseif (strfind (typeinfo (A), "diagonal matrix"))
+  elseif (isdiag (A))
     s = diag (log (diag (A)));
     return;
   endif
@@ -188,6 +188,8 @@
 %!      -1.9769, -1.0922, -0.5831];
 %! warning ("off", "Octave:logm:non-principal", "local");
 %! assert (expm (logm (A)), A, 40*eps);
+%!assert (expm (logm (diag (ones (1, 3)))), diag (ones (1, 3)));
+%!assert (expm (logm (zeros (3))), zeros (3));
 
 ## Test input validation
 %!error logm ()