# SpecialMatrix

Advanced Analysis Library Only

AnalysisLibErrType SpecialMatrix (int matrixType, int matrixSize, double inputArray1[], int sizeArray1, double inputArray2[], int sizeArray2, void *outputMatrix);

## Purpose

Generates a special type of real matrix depending on the value of matrixType. There are five possible matrix types: Identity, Diagonal, Toeplitz, Vandermonde, and Companion.

## Parameters

Input
Name | Type | Description
matrixType | integer | Type of matrix to generate. The following table shows each matrix type and its behavior. Let n represent matrixSize, x represent inputArray1, nx represent sizeArray1, y represent inputArray2, ny represent sizeArray2, and B represent the outputMatrix.
Matrix Type | Value | Behavior
Identity | 0 | SpecialMatrix generates an n-by-n identity matrix.
Diagonal | 1 | SpecialMatrix generates an nx-by-nx diagonal matrix with diagonal elements that are the elements of x.
Toeplitz | 2 | SpecialMatrix generates an nx-by-ny Toeplitz matrix, which has x as its first column and y as its first row. If the first element of x and y are different, SpecialMatrix uses the first element of x.
Vandermonde | 3 | SpecialMatrix generates an nx-by-nx Vandermonde matrix in which the kth column, for k = 0, 1, 2, . . ., nx — 1, equals the (nx — k —1)th power of the elements of x. The elements of a Vandermonde matrix are as follows: bi,j = xinx — j — 1 where i, j = 0, 1, . . ., nx — 1
Companion | 4 | SpecialMatrix generates an nx — 1-by-nx — 1 companion matrix. Assuming that the vector x consists of polynomial coefficients where the first element of x is the coefficient of the highest order and the last element of x is the constant term in the polynomial, SpecialMatrix constructs the corresponding companion matrix as follows: The first row of the matrix is for j = 1, 2, . . ., nx — 1 and the remaining rows of the generated matrix form an identity matrix. The eigenvalues of a companion matrix contain the roots of the corresponding polynomial.
matrixSize | integer | Number of rows and columns to generate when matrixType is Identity matrix.
inputArray1 | double-precision array | Complex vector used to generate a Diagonal matrix, Toeplitz matrix, Vandermonde matrix, or Companion matrix.
sizeArray1 | integer | Number of elements in vector inputArray1.
inputArray2 | double-precision array | Second vector to use to generate the Toeplitz matrix.
sizeArray2 | integer | Number of elements in vector inputArray2.
Output
Name | Type | Description
outputMatrix | numeric array | Generated matrix as an array of doubles.

## 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.