# QREx

Advanced Analysis Library Only

AnalysisLibErrType QREx (void *inputMatrix, int numberOfRows, int numberOfColumns, int pivot, int sizeOption, void *pivotInfo, void *qMatrix, void *rMatrix);

## Purpose

Calculates the QR factorization for a real matrix. QREx factorizes A as AP = QR, where P is a permutation matrix, Q is an orthogonal matrix, and R is an upper triangular matrix. If numberOfRows > numberOfColumns, sizeOption is ECONOMY_SIZE and rMatrix is NULL or inputMatrix. On output, the leading numberOfColumns rows in inputMatrix are the upper triangular matrix R.
National Instruments recommends you use this function instead of QR.

## Parameters

Input
Name | Type | Description
inputMatrix | numeric array | The input matrix.
numberOfRows | integer | The number of rows of inputMatrix.
numberOfColumns | integer | The number of columns of inputMatrix.
pivot | integer | Specifies how to pivot inputMatrix. pivot must be one of the following values: NOT_PIVOT (0): Do not pivot inputMatrix. That is, factorize inputMatrix as inputMatrix = QR. In this case, pivotInfo is not referenced. PIVOT_VECTOR (1): Pivot inputMatrix and record the pivoting information as a vector in pivotInfo. That is, factorize inputMatrix as AP = QR. The size of pivotInfo must be numberOfColumns. PIVOT_MATRIX (2): Pivot inputMatrix and record the pivoting information as a matrix in pivotInfo. That is, factorize inputMatrix as AP = QR. The size of pivotInfo must be numberOfColumns * numberOfColumns. With pivoting, inputMatrix is pivoted so that abs(diag(rMatrix)) are in descending order.
sizeOption | integer | The size option for qMatrix and rMatrix. sizeOption must one of the following values: FULL_SIZE (0): The size of qMatrix is numberOfRows * numberOfRows. The size of rMatrix is numberOfRows * numberOfColumns. ECONOMY_SIZE (1): The size of qMatrix is numberOfRows * min(numberOfRows, numberOfColumns). The size of rMatrix is min(numberOfRows, numberOfColumns) * numberOfColumns.
Output
Name | Type | Description
pivotInfo | numeric array | The pivoting information if pivot is PIVOT_VECTOR or PIVOT_MATRIX. If pivot = PIVOT_VECTOR, pivotInfo is a numberOfColumns element vector. The columns of AP are the columns of A in the following order: pivotInfo[0], pivotInfo[1], pivotInfo[2], . . . , pivotInfo[colA-1]. If pivot = PIVOT_MATRIX, pivotInfo is directly the permutation matrix P in AP = QR. If pivot is NOT_PIVOT, pass NULL for this parameter.
qMatrix | numeric array | The orthogonal matrix Q. If qMatrix = NULL, qMatrix is not generated.
rMatrix | numeric array | The upper triangular matrix R. Set rMatrix to NULL or inputMatrix to perform in place operation.

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