Mercurial > hg > octave-lyh
diff scripts/linear-algebra/expm.m @ 10831:1646bd8e3735
special case diagonal matrices and scalars in expm
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 29 Jul 2010 08:51:23 +0200 |
parents | 3140cb7a05a1 |
children | 994e2a93a8e2 |
line wrap: on
line diff
--- a/scripts/linear-algebra/expm.m +++ b/scripts/linear-algebra/expm.m @@ -76,6 +76,14 @@ error ("expm: input must be a square matrix"); endif + if (isscalar (a)) + r = exp (a); + return + elseif (strfind (typeinfo (a), "diagonal matrix")) + r = diag (exp (diag (a))); + return + endif + n = rows (a); ## Trace reduction. a(a == -Inf) = -realmax;