# CxSchur

Advanced Analysis Library Only

AnalysisLibErrType CxSchur (void *inputMatrix, int matrixSize, int order, void *orthogonalMatrix, void *schurMatrix, NIComplexNumber eigenvalues[]);

## Purpose

Performs the Schur decomposition of a complex matrix A, as follows:
A = QSQH

where | Q is a unitary matrix composed of Schur vectors
| S is a complex Schur form matrix, which is an upper triangular matrix
| QH is the conjugate transpose of Q

## Parameters

Input
Name | Type | Description
inputMatrix | numeric array | The input matrix.
matrixSize | integer | The order of inputMatrix.
order | integer | Specifies how to reorder the computed eigenvalues and corresponding Schur vectors. order must be one of the following values: None: The computed eigenvalues are not reordered. REAL_ASCENDING: Reorders eigenvalues and corresponding Schur vectors in real part ascending order. REAL_DESCENDING: Reorders eigenvalues and corresponding Schur vectors in real part descending order. MAG_ASCENDING: Reorders eigenvalues and corresponding Schur vectors in magnitude ascending order. MAG_DESCENDING: Reorders eigenvalues and corresponding Schur vectors in magnitude descending order.
Output
Name | Type | Description
orthogonalMatrix | numeric array | The unitary matrix Q. On input, if orthogonalMatrix = NULL, Q is not computed.
schurMatrix | numeric array | The complex Schur form matrix S. That is, schurMatrix is an upper triangular matrix.
eigenvalues | complex number array | The eigenvalues of inputMatrix, in the same order that they appear on the diagonal of the output complex Schur form schurMatrix.

## Return Value

Name | Type | Description
status | AnalysisLibErrType | A value that specifies the type of error that occurred. Refer to analysis.h for definitions of these constants.