F08 Chapter Contents
F08 Chapter Introduction
NAG Library Manual

# NAG Library Routine DocumentF08QVF (ZTRSYL)

Note:  before using this routine, please read the Users' Note for your implementation to check the interpretation of bold italicised terms and other implementation-dependent details.

## 1  Purpose

F08QVF (ZTRSYL) solves the complex triangular Sylvester matrix equation.

## 2  Specification

 SUBROUTINE F08QVF ( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCAL, INFO)
 INTEGER ISGN, M, N, LDA, LDB, LDC, INFO REAL (KIND=nag_wp) SCAL COMPLEX (KIND=nag_wp) A(LDA,*), B(LDB,*), C(LDC,*) CHARACTER(1) TRANA, TRANB
The routine may be called by its LAPACK name ztrsyl.

## 3  Description

F08QVF (ZTRSYL) solves the complex Sylvester matrix equation
 $opAX ± XopB = αC ,$
where $\mathrm{op}\left(A\right)=A$ or ${A}^{\mathrm{H}}$, and the matrices $A$ and $B$ are upper triangular; $\alpha$ is a scale factor ($\text{}\le 1$) determined by the routine to avoid overflow in $X$; $A$ is $m$ by $m$ and $B$ is $n$ by $n$ while the right-hand side matrix $C$ and the solution matrix $X$ are both $m$ by $n$. The matrix $X$ is obtained by a straightforward process of back-substitution (see Golub and Van Loan (1996)).
Note that the equation has a unique solution if and only if ${\alpha }_{i}±{\beta }_{j}\ne 0$, where $\left\{{\alpha }_{i}\right\}$ and $\left\{{\beta }_{j}\right\}$ are the eigenvalues of $A$ and $B$ respectively and the sign ($+$ or $-$) is the same as that used in the equation to be solved.

## 4  References

Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
Higham N J (1992) Perturbation theory and backward error for $AX-XB=C$ Numerical Analysis Report University of Manchester

## 5  Parameters

1:     TRANA – CHARACTER(1)Input
On entry: specifies the option $\mathrm{op}\left(A\right)$.
${\mathbf{TRANA}}=\text{'N'}$
$\mathrm{op}\left(A\right)=A$.
${\mathbf{TRANA}}=\text{'C'}$
$\mathrm{op}\left(A\right)={A}^{\mathrm{H}}$.
Constraint: ${\mathbf{TRANA}}=\text{'N'}$ or $\text{'C'}$.
2:     TRANB – CHARACTER(1)Input
On entry: specifies the option $\mathrm{op}\left(B\right)$.
${\mathbf{TRANB}}=\text{'N'}$
$\mathrm{op}\left(B\right)=B$.
${\mathbf{TRANB}}=\text{'C'}$
$\mathrm{op}\left(B\right)={B}^{\mathrm{H}}$.
Constraint: ${\mathbf{TRANB}}=\text{'N'}$ or $\text{'C'}$.
3:     ISGN – INTEGERInput
On entry: indicates the form of the Sylvester equation.
${\mathbf{ISGN}}=+1$
The equation is of the form $\mathrm{op}\left(A\right)X+X\mathrm{op}\left(B\right)=\alpha C$.
${\mathbf{ISGN}}=-1$
The equation is of the form $\mathrm{op}\left(A\right)X-X\mathrm{op}\left(B\right)=\alpha C$.
Constraint: ${\mathbf{ISGN}}=+1$ or $-1$.
4:     M – INTEGERInput
On entry: $m$, the order of the matrix $A$, and the number of rows in the matrices $X$ and $C$.
Constraint: ${\mathbf{M}}\ge 0$.
5:     N – INTEGERInput
On entry: $n$, the order of the matrix $B$, and the number of columns in the matrices $X$ and $C$.
Constraint: ${\mathbf{N}}\ge 0$.
6:     A(LDA,$*$) – COMPLEX (KIND=nag_wp) arrayInput
Note: the second dimension of the array A must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{M}}\right)$.
On entry: the $m$ by $m$ upper triangular matrix $A$.
7:     LDA – INTEGERInput
On entry: the first dimension of the array A as declared in the (sub)program from which F08QVF (ZTRSYL) is called.
Constraint: ${\mathbf{LDA}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{M}}\right)$.
8:     B(LDB,$*$) – COMPLEX (KIND=nag_wp) arrayInput
Note: the second dimension of the array B must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{N}}\right)$.
On entry: the $n$ by $n$ upper triangular matrix $B$.
9:     LDB – INTEGERInput
On entry: the first dimension of the array B as declared in the (sub)program from which F08QVF (ZTRSYL) is called.
Constraint: ${\mathbf{LDB}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{N}}\right)$.
10:   C(LDC,$*$) – COMPLEX (KIND=nag_wp) arrayInput/Output
Note: the second dimension of the array C must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{N}}\right)$.
On entry: the $m$ by $n$ right-hand side matrix $C$.
On exit: C is overwritten by the solution matrix $X$.
11:   LDC – INTEGERInput
On entry: the first dimension of the array C as declared in the (sub)program from which F08QVF (ZTRSYL) is called.
Constraint: ${\mathbf{LDC}}\ge \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{M}}\right)$.
12:   SCAL – REAL (KIND=nag_wp)Output
On exit: the value of the scale factor $\alpha$.
13:   INFO – INTEGEROutput
On exit: ${\mathbf{INFO}}=0$ unless the routine detects an error (see Section 6).

## 6  Error Indicators and Warnings

${\mathbf{INFO}}<0$
If ${\mathbf{INFO}}=-i$, argument $i$ had an illegal value. An explanatory message is output, and execution of the program is terminated.
${\mathbf{INFO}}=1$
$A$ and $B$ have common or close eigenvalues, perturbed values of which were used to solve the equation.

## 7  Accuracy

Consider the equation $AX-XB=C$. (To apply the remarks to the equation $AX+XB=C$, simply replace $B$ by $-B$.)
Let $\stackrel{~}{X}$ be the computed solution and $R$ the residual matrix:
 $R = C - AX~ - X~B .$
Then the residual is always small:
 $RF = Oε AF + BF X~F .$
However, $\stackrel{~}{X}$ is not necessarily the exact solution of a slightly perturbed equation; in other words, the solution is not backwards stable.
For the forward error, the following bound holds:
 $X~ - X F ≤ RF sep A,B$
but this may be a considerable over estimate. See Golub and Van Loan (1996) for a definition of $\mathit{sep}\left(A,B\right)$, and Higham (1992) for further details.
These remarks also apply to the solution of a general Sylvester equation, as described in Section 8.

The total number of real floating point operations is approximately $4mn\left(m+n\right)$.
To solve the general complex Sylvester equation
 $AX ± XB = C$
where $A$ and $B$ are general matrices, $A$ and $B$ must first be reduced to Schur form (by calling F08PNF (ZGEES), for example):
 $A = Q1 A~ Q1H and B = Q2 B~ Q2H$
where $\stackrel{~}{A}$ and $\stackrel{~}{B}$ are upper triangular and ${Q}_{1}$ and ${Q}_{2}$ are unitary. The original equation may then be transformed to:
 $A~ X~ ± X~ B~ = C~$
where $\stackrel{~}{X}={Q}_{1}^{\mathrm{H}}X{Q}_{2}$ and $\stackrel{~}{C}={Q}_{1}^{\mathrm{H}}C{Q}_{2}$. $\stackrel{~}{C}$ may be computed by matrix multiplication; F08QVF (ZTRSYL) may be used to solve the transformed equation; and the solution to the original equation can be obtained as $X={Q}_{1}\stackrel{~}{X}{Q}_{2}^{\mathrm{H}}$.
The real analogue of this routine is F08QHF (DTRSYL).

## 9  Example

This example solves the Sylvester equation $AX+XB=C$, where
 $A = -6.00-7.00i 0.36-0.36i -0.19+0.48i 0.88-0.25i 0.00+0.00i -5.00+2.00i -0.03-0.72i -0.23+0.13i 0.00+0.00i 0.00+0.00i 8.00-1.00i 0.94+0.53i 0.00+0.00i 0.00+0.00i 0.00+0.00i 3.00-4.00i ,$
 $B = 0.50-0.20i -0.29-0.16i -0.37+0.84i -0.55+0.73i 0.00+0.00i -0.40+0.90i 0.06+0.22i -0.43+0.17i 0.00+0.00i 0.00+0.00i -0.90-0.10i -0.89-0.42i 0.00+0.00i 0.00+0.00i 0.00+0.00i 0.30-0.70i$
and
 $C = 0.63+0.35i 0.45-0.56i 0.08-0.14i -0.17-0.23i -0.17+0.09i -0.07-0.31i 0.27-0.54i 0.35+1.21i -0.93-0.44i -0.33-0.35i 0.41-0.03i 0.57+0.84i 0.54+0.25i -0.62-0.05i -0.52-0.13i 0.11-0.08i .$

### 9.1  Program Text

Program Text (f08qvfe.f90)

### 9.2  Program Data

Program Data (f08qvfe.d)

### 9.3  Program Results

Program Results (f08qvfe.r)