# [Scipy-tickets] [SciPy] #1897: expmFrechet would be nice

SciPy Trac scipy-tickets@scipy....
Sun Apr 21 23:19:11 CDT 2013

```#1897: expmFrechet would be nice
------------------------------------------+---------------------------------
Reporter:  unknown (google)              |       Owner:  pv
Type:  enhancement                   |      Status:  new
Priority:  low                           |   Milestone:  Unscheduled
Component:  scipy.linalg                  |     Version:  0.12.0
Keywords:  linalg matfuncs expm frechet  |
------------------------------------------+---------------------------------
I have an application where I need to compute the matrix exponential
expm(A) and also the upper right block of expm([[A, E], [0, A]]).

Luckily, there's a detailed explanation of a fast algorithm to do this.
http://eprints.ma.man.ac.uk/1218/

It is even available in R as expmFrechet.
http://cran.r-project.org/web/packages/expm/expm.pdf

Perhaps if I would try to independently and manually transcribe Higham's
published algorithm into python code and paste it into this ticket, then
it would make its way into scipy.linalg?  I would not need a sparse matrix
implementation, and I would only need double float precision.  I would
probably not be up to the task of making a complete pull request on
github.

Maybe it could become available, using a function signature like in the R
docs, as scipy.linalg.expm_frechet(A, E, method="SPS", compute_expm=True)
where A and E are NxN double precision numpy ndarrays, and it would return
either the two NxN output matrices (expm_frechet_AE, expm_A) or just the
single NxN output matrix expm_frechet_AE depending on the value of the
compute_expm arg.  The method arg would be either "SPS" for the clever
algorithm or "blockEnlarge" for the dumb algorithm.  Testing would be very
simple because expm is already implemented.

--
Ticket URL: <http://projects.scipy.org/scipy/ticket/1897>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.
```