f01 Chapter Contents
f01 Chapter Introduction
NAG Library Manual

# NAG Library Function Documentnag_matop_complex_gen_matrix_frcht_exp (f01khc)

## 1  Purpose

nag_matop_complex_gen_matrix_frcht_exp (f01khc) computes the Fréchet derivative $L\left(A,E\right)$ of the matrix exponential of a complex $n$ by $n$ matrix $A$ applied to the complex $n$ by $n$ matrix $E$. The matrix exponential ${e}^{A}$ is also returned.

## 2  Specification

 #include #include
 void nag_matop_complex_gen_matrix_frcht_exp (Integer n, Complex a[], Integer pda, Complex e[], Integer pde, NagError *fail)

## 3  Description

The Fréchet derivative of the matrix exponential of $A$ is the unique linear mapping $E⟼L\left(A,E\right)$ such that for any matrix $E$
 $eA+E - e A - LA,E = oE .$
The derivative describes the first-order effect of perturbations in $A$ on the exponential ${e}^{A}$.
nag_matop_complex_gen_matrix_frcht_exp (f01khc) uses the algorithms of Al–Mohy and Higham (2009a) and Al–Mohy and Higham (2009b) to compute ${e}^{A}$ and $L\left(A,E\right)$. The matrix exponential ${e}^{A}$ is computed using a Padé approximant and the scaling and squaring method. The Padé approximant is then differentiated in order to obtain the Fréchet derivative $L\left(A,E\right)$.

## 4  References

Al–Mohy A H and Higham N J (2009a) A new scaling and squaring algorithm for the matrix exponential SIAM J. Matrix Anal. 31(3) 970–989
Al–Mohy A H and Higham N J (2009b) Computing the Fréchet derivative of the matrix exponential, with an application to condition number estimation SIAM J. Matrix Anal. Appl. 30(4) 1639–1657
Higham N J (2008) Functions of Matrices: Theory and Computation SIAM, Philadelphia, PA, USA
Moler C B and Van Loan C F (2003) Nineteen dubious ways to compute the exponential of a matrix, twenty-five years later SIAM Rev. 45 3–49

## 5  Arguments

1:     nIntegerInput
On entry: $n$, the order of the matrix $A$.
Constraint: ${\mathbf{n}}\ge 0$.
2:     a[$\mathit{dim}$]ComplexInput/Output
Note: the dimension, dim, of the array a must be at least ${\mathbf{pda}}×{\mathbf{n}}$.
The $\left(i,j\right)$th element of the matrix $A$ is stored in ${\mathbf{a}}\left[\left(j-1\right)×{\mathbf{pda}}+i-1\right]$.
On entry: the $n$ by $n$ matrix $A$.
On exit: the $n$ by $n$ matrix exponential ${e}^{A}$.
3:     pdaIntegerInput
On entry: the stride separating matrix row elements in the array a.
Constraint: ${\mathbf{pda}}\ge {\mathbf{n}}$.
4:     e[$\mathit{dim}$]ComplexInput/Output
Note: the dimension, dim, of the array e must be at least ${\mathbf{pde}}×{\mathbf{n}}$.
The $\left(i,j\right)$th element of the matrix $E$ is stored in ${\mathbf{e}}\left[\left(j-1\right)×{\mathbf{pde}}+i-1\right]$.
On entry: the $n$ by $n$ matrix $E$
On exit: the Fréchet derivative $L\left(A,E\right)$
5:     pdeIntegerInput
On entry: the stride separating matrix row elements in the array e.
Constraint: ${\mathbf{pde}}\ge {\mathbf{n}}$.
6:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
NE_INT
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{n}}\ge 0$.
NE_INT_2
On entry, ${\mathbf{pda}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{pda}}\ge {\mathbf{n}}$.
On entry, ${\mathbf{pde}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{pde}}\ge {\mathbf{n}}$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_SINGULAR
The linear equations to be solved for the Padé approximant are singular; it is likely that this function has been called incorrectly.
NW_SOME_PRECISION_LOSS
${e}^{A}$ has been computed using an IEEE double precision Padé approximant, although the arithmetic precision is higher than IEEE double precision.

## 7  Accuracy

For a normal matrix $A$ (for which ${A}^{\mathrm{H}}A=A{A}^{\mathrm{H}}$) the computed matrix, ${e}^{A}$, is guaranteed to be close to the exact matrix, that is, the method is forward stable. No such guarantee can be given for non-normal matrices. See Section 10.3 of Higham (2008), Al–Mohy and Higham (2009a) and Al–Mohy and Higham (2009b) for details and further discussion.

## 8  Parallelism and Performance

nag_matop_complex_gen_matrix_frcht_exp (f01khc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_matop_complex_gen_matrix_frcht_exp (f01khc) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.

The cost of the algorithm is $O\left({n}^{3}\right)$ and the complex allocatable memory required is approximately $9{n}^{2}$; see Al–Mohy and Higham (2009a) and Al–Mohy and Higham (2009b).
If the matrix exponential alone is required, without the Fréchet derivative, then nag_matop_complex_gen_matrix_exp (f01fcc) should be used.
If the condition number of the matrix exponential is required then nag_matop_complex_gen_matrix_cond_exp (f01kgc) should be used.
As well as the excellent book Higham (2008), the classic reference for the computation of the matrix exponential is Moler and Van Loan (2003).

## 10  Example

This example finds the matrix exponential ${e}^{A}$ and the Fréchet derivative $L\left(A,E\right)$, where
 $A = 1+0i 2+0i 2+0i 2+i 3+2i 1i+0 1i+0 2+i 3+2i 2+0i 1i+0 2+i 3+2i 3+2i 3+2i 1+i and E = 1i+0 2+0i 2i+0 4+i 3+2i 0i+0 1i+0 0+i 0+2i 0+0i 1i+0 0i+ 1+0i 2+2i 0+3i 1i+ .$

### 10.1  Program Text

Program Text (f01khce.c)

### 10.2  Program Data

Program Data (f01khce.d)

### 10.3  Program Results

Program Results (f01khce.r)