Matrix exponentiation can be performed in python using functions within the scipy.linalg library, namely expm, expm2, expm3. expm makes use of a Pade approximation; expm2 uses the eigenvalue decomposition approach and expm3 makes use of a Taylor series with a default number of terms of 20.
In SciPy 0.13.0 release notes it is stated that:
The matrix exponential functions scipy.linalg.expm2 and scipy.linalg.expm3 are deprecated. All users should use the numerically more robust scipy.linalg.expm function instead.
Although expm2 and expm3 are deprecated since release version SciPy 0.13.0, I have found that in many situations these implementations are faster than expm.
From this, some questions arise:
In what situations could expm2 and expm3 result in numerical instabilities?
In what situations (e.g. sparse matrices, symmetric, ...) is each of the algorithms faster/more precise?