# Matrix Exponentials

ExponentialUtilities.exponential!Function
E=exponential!(A,[method [cache]])

Computes the matrix exponential with method specified in method. The contents of A is modified allowing for less allocations. The method parameter specifies the implementation and implementation parameters, e.g. ExpMethodNative, ExpMethodDiagonalization, ExpMethodGeneric, ExpMethodHigham2005. Memory needed can be preallocated and provided in parameter cache such that the memory can recycled when calling exponential! several times. The preallocation is done with the command alloc_mem: cache=alloc_mem(A,method).

Example

julia> A=randn(50,50);
julia> Acopy=B*2;
julia> method=ExpMethodHigham2005();
julia> cache=alloc_mem(A,method); # Main allocation done here
julia> E1=exponential!(A,method,cache) # Very little allocation here
julia> E2=exponential!(B,method,cache) # Very little allocation here
Missing docstring.

Missing docstring for phi. Check Documenter's build log for details.

## Methods

ExponentialUtilities.ExpMethodHigham2005Type
ExpMethodHigham2005(A::AbstractMatrix);
ExpMethodHigham2005(b::Bool=true);

Computes the matrix exponential using the algorithm Higham, N. J. (2005). "The scaling and squaring method for the matrix exponential revisited." SIAM J. Matrix Anal. Appl.Vol. 26, No. 4, pp. 1179–1193" based on generated code. If a matrix is specified, balancing is determined automatically.

ExponentialUtilities.ExpMethodGenericType
struct ExpMethodGeneric{T}
ExpMethodGeneric()=ExpMethodGeneric{Val{13}}();

Generic exponential implementation of the method ExpMethodHigham2005, for any exp argument x for which the functions LinearAlgebra.opnorm, +, *, ^, and / (including addition with UniformScaling objects) are defined. The type T is used to adjust the number of terms used in the Pade approximants at compile time.

See "The Scaling and Squaring Method for the Matrix Exponential Revisited" by Higham, Nicholas J. in 2005 for algorithm details.

ExponentialUtilities.ExpMethodDiagonalizationType
ExpMethodDiagonalization(enforce_real=true)

Matrix exponential method corresponding to the diagonalization with eigen possibly by removing imaginary part introduced by the numerical approximation.

## Utilities

Missing docstring.

Missing docstring for alloc_mem. Check Documenter's build log for details.