# LGF_MatrixInverse (FC / V3.0.1)

Author: Siemens Digital Industry

## Short description

This function inverts a square matrix of the data type `ARRAY[*,*] of LREAL`.
The square matrix of any size will be inverted according to the Shipley-Coleman method.

matrixResult = matrix^{-1}

Note
  Note that the input matrix must be square. This means that the number of rows must be equal to the number of columns. The output matrix must be the same size and have the same array boundaries as the input matrix.

### Block Interface

| LGF_MatrixInverse (FC) |
--- | --- | ---
|  |  |  |  | Ret_Val |  |  | Void
|  |  |  |  | error |  |  | Bool
|  |  |  |  | status |  |  | Word
Array[*, *] of LReal |  |  | matrix |  |  | Array[*, *] of LReal
Array[*, *] of LReal |  |  | matrixResult |  |  | Array[*, *] of LReal

### Output parameter

Identifier | Data type | Description
--- | --- | ---
Ret_Val | Void | Void - Function has no return value
error | Bool | FALSE: No error TRUE: An error occurred during the execution of the FB
status | Word | 16#0000-16#7FFF: Status of the FB 16#8000-16#FFFF: Error identification (see following Table)

### In/Out parameter

Identifier | Data type | Description
--- | --- | ---
matrix | Array[*, *] of LReal | Square input matrix that will be inversed (Array[0..x, 0..x] of REAL)
matrixResult | Array[*, *] of LReal | Inverted matrix

### Status & Error codes

Code / Value | Identifier / Description
--- | ---
16#0000 | STATUS_NO_ERROR Execution finished without errors
16#8200 | ERR_NOT_SQUARE_MATRIX Error: Matrix is not square (number of rows equals number of colums)
16#8201 | ERR_ALGORITHM_NOT_POSSIBLE Matrix determinant is zero. Inversion is not possible for this matrix
16#8202 | ERR_MATR1_LOWBOUND_ROWS_RESMATR_LOWBOUND_ROWS Error: Matrix1 lower bound rows(Dim1) size is different with Result Matrix lower bound rows(Dim1)
16#8203 | ERR_MATR1_LOWBOUND_COLUMNS_RESMATR_LOWBOUND_COLUMNS Error: Matrix1 lower bound columns(Dim2) size is different with Result Matrix lower bound columns(Dim2)
16#8204 | ERR_MATR1_UPPBOUND_ROWS_RESMATR_UPPBOUND_ROWS Error: Matrix1 upper bound rows(Dim1) size is different with Result Matrix upper bound rows(Dim1)
16#8205 | ERR_MATR1_UPPBOUND_COLUMNS_RESMATR_UPPBOUND_COLUMNS Error: Matrix1 upper bound columns(Dim2) size is different with Result Matrix upper bound columns(Dim2)

## Change log

Version & Date | Change description
--- | ---
| 01.00.00 | Siemens Industry Online Support
| 19.08.2015 | First released version
| 01.00.01 | Siemens Industry Online Support
| 02.01.2017 | Upgrade: TIA Portal V14 Update 1
| 02.00.00 | Siemens Industry Online Support
| 06.02.2017 | Functionality using Array[*,*]
| 02.00.01 | Siemens Industry Online Support
| 17.08.2018 | Upgrade: TIA V15 Update 2
| 02.00.02 | Siemens Industry Online Support
| 23.11.2018 | Upgrade: TIA V15.1
| 02.00.05 | Simatic Systems Support
| 13.11.2019 | Regions, comments and constants are added Moved matrices to IO field.
| 03.00.00 | Simatic Systems Support
| 23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library
| 03.00.01 | Simatic Systems Support
| 02.02.2020 | Insert documentation