# EigenVBack

Advanced Analysis Library Only

AnalysisLibErrType EigenVBack (void *inputEigenvectors, int numberOfEigenvectors, int side, int method, int indexLow, int indexHigh, double scale[], void *outputEigenvectors);

## Purpose

Transforms the eigenvectors of a balanced matrix to those of the original matrix. If you want more accurate eigenvectors, complete the following steps:

1. Balance the original matrix using MatrixBalance.
2. Call GenEigenValueVector to get the eigenvectors of the balanced matrix.
3. Call EigenVBack to back-transform the eigenvectors of the balanced matrix to the eigenvectors of the original matrix. Call CxEigenVBack if the eigenvectors are complex.

## Parameters

Input
Name | Type | Description
inputEigenvectors | numeric array | The eigenvectors of the balanced matrix.
numberOfEigenvectors | integer | The order of inputEigenvectors.
side | integer | Specifies whether inputEigenvectors contains right side eigenvectors or left side eigenvectors. side must be one of the following values: RIGHT_EIGEN (0) : Right side eigenvectors LEFT_EIGEN (1): Left side eigenvectors
method | integer | Specifies how the original matrix is balanced. Pass the same value for method that was passed to MatrixBalance when the original matrix was balanced.
indexLow | integer | The permutation information from MatrixBalance.
indexHigh | integer | The permutation information from MatrixBalance.
scale | double-precision array | The scale information from MatrixBalance.
Output
Name | Type | Description
outputEigenvectors | numeric array | The eigenvectors of the original matrix. If you call EigenVBack with outputEigenvectors = NULL or outputEigenvectors = inputEigenvectors, the back-transformed eigenvectors overwrite inputEigenvectors.

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