Julia package to compute the result of expm(t*A)*v when A is a sparse matrix, without computing expm(t*A).
Author matteoacrossi
5 Stars
Updated Last
2 Years Ago
Started In
May 2018


Build Status

This is a fork from https://github.com/marcusps/ExpmV.jl, implementing the evaluation for multiple values of the parameter t.

This is a Julia translation of the MATLAB implementation of Al-Mohy and Higham's function for computing expm(t*A)*v when A is sparse, without explicitly computing expm(A).

If t is a StepRangeLen object (i. e. a linspace), use an optimized algorithm to output the result for all t.

The original code can be found at (https://github.com/higham/expmv), and the theory is explained in the following article:

Computing the Action of the Matrix Exponential, with an Application to Exponential Integrators, Awad H. Al-Mohy and Nicholas J. Higham, SIAM Journal on Scientific Computing 2011 33:2, 488-511. (preprint)


Install into Julia using the package manager:



expmv(t, A, v)

Eg. t = 1., or t = linspace(0, 1, 100).


Need to run updated benchmarks on Julia v1.0


Released under the BSD 2-clause license used in Al-Mohy and Higham's original code, with the exception of function norm1est: the fast 1-norm estimation that is crucial for the speed of this algorithm is adapted from code available in Julia's Base module. This function (norm1est) is licensed under the MIT license.