I’m pleased to announce FiniteHorizonGramians.jl. Given a pair of matrices (A, B), this package implements an algorithm for computing both the matrix exonential e^{A t}, and the finite horizon controllability Gramian over the interval [0, t], which is given by

Though the major benefit of the package is that it can compute e^{A t} and an upper triangular Cholesky factor, U, of G in a numerically robust way, without forming G as an intermediate step.

In fact, the base algorithm computes (e^{At}, U), and then forms G as a post-processing step (if you want). The implementation is based on the pre-print:

Please see the README for installation instructions and a basic usage example. You can also browse the documentation for a more complete description of the functionality in the package.