L = logm(A)
[L, exitflag] = logm(A)
L = logm(A) is the principal matrix logarithm of A, the inverse of expm(A). L is the unique logarithm for which every eigenvalue has imaginary part lying strictly between –π and π. If A is singular or has any eigenvalues on the negative real axis, the principal logarithm is undefined. In this case, logm computes a nonprincipal logarithm and returns a warning message.
If exitflag = 0, the algorithm was successfully completed.
If exitflag = 1, too many matrix square roots had to be computed. However, the computed value of L might still be accurate.
The input A can have class double or single.
For most matrices:
logm(expm(A)) = A = expm(logm(A))
These identities may fail for some A. For example, if the computed eigenvalues of A include an exact zero, then logm(A) generates infinity. Or, if the elements of A are too large, expm(A) may overflow.
Suppose A is the 3-by-3 matrix
1 1 0 0 0 2 0 0 -1
and Y = expm(A) is
Y = 2.7183 1.7183 1.0862 0 1.0000 1.2642 0 0 0.3679
Then A = logm(Y) produces the original matrix A.
Y = 1.0000 1.0000 0.0000 0 0 2.0000 0 0 -1.0000
But log(A) involves taking the logarithm of zero, and so produces
ans = 0.0000 0 -35.5119 -Inf -Inf 0.6931 -Inf -Inf 0.0000 + 3.1416i
 Davies, P. I. and N. J. Higham, "A Schur-Parlett algorithm for computing matrix functions," SIAM J. Matrix Anal. Appl., Vol. 25, Number 2, pp. 464-485, 2003.
 Cheng, S. H., N. J. Higham, C. S. Kenney, and A. J. Laub, "Approximating the logarithm of a matrix to specified accuracy," SIAM J. Matrix Anal. Appl., Vol. 22, Number 4, pp. 1112-1125, 2001.
 Higham, N. J., "Evaluating Pade approximants of the matrix logarithm," SIAM J. Matrix Anal. Appl., Vol. 22, Number 4, pp. 1126-1135, 2001.
 Golub, G. H. and C. F. Van Loan, Matrix Computation, Johns Hopkins University Press, 1983, p. 384.
 Moler, C. B. and C. F. Van Loan, "Nineteen Dubious Ways to Compute the Exponential of a Matrix," SIAM Review 20, 1978, pp. 801-836.