## Libraries.Compute.MatrixTransform.OrthonormalTriangularDecomposition Documentation

This class calculates an orthonormal matrix and an upper triangular matrix from a given matrix. Classically, this is called a "QR" decomposition, which is referencing the orthonormal (Q) and the upper triangular (R). There are multiple ways to conduct this decomposition and this class uses Householder reflectors, which is a numerically stable way to conduct the calculation. This class is a port from the Apache Commons Linear algebra library, which itself is adapted from the JAMA library. In our class, we changed the names and way the programmer interacts with the class, but the primary calculations are very similar. More information on QR decomposition can be found at MathWorld or Wikipedia.

**Example Code**

```
:
use Libraries.Compute.Matrix
use Libraries.Compute.MatrixTransform.OrthonormalTriangularDecomposition
Matrix matrix
matrix:SetSize(3,3)
matrix:Set(0,0,12.0)
matrix:Set(1,0,6)
matrix:Set(2,0,-4)
matrix:Set(0,1,-51)
matrix:Set(1,1,167)
matrix:Set(2,1,24)
matrix:Set(0,2,4)
matrix:Set(1,2,-68)
matrix:Set(2,2,-41)
OrthonormalTriangularDecomposition decomp
decomp:Calculate(matrix)
Matrix value = decomp:GetResult()
output value:ToText()
```

*Inherits from: *Libraries.Language.Object

## Summary

### Actions Summary Table

Actions | Description |
---|---|

Calculate(Libraries.Compute.Matrix matrix) | This action does the decomposition and stores the matrices as state inside of this class. |

Compare(Libraries.Language.Object object) | This action compares two object hash codes and returns an integer. |

Equals(Libraries.Language.Object object) | This action determines if two objects are equal based on their hash code values. |

GetHashCode() | This action gets the hash code for an object. |

GetOrthonormalMatrix() | This action gets the orthonormal matrix. |

GetOrthonormalTransposedMatrix() | This action gets the orthonormal matrix. |

GetResult() | This action gets the orthonormal matrix. |

GetUpperTriangularMatrix() | This action returns the upper triangular matrix. |

Solve(Libraries.Compute.Vector vector) | fill it with zero |

## Actions Documentation

### Calculate(Libraries.Compute.Matrix matrix)

This action does the decomposition and stores the matrices as state inside of this class. Thus, the matrices can then be copied, stored, or used as desired. To obtain the orthonormal matrix (Q), we call GetOrthonormalMatrix, and to get the upper triangular matrix (R), we call GetUpperTriangularMatrix.

**Example Code**

```
:
use Libraries.Compute.Matrix
use Libraries.Compute.MatrixTransform.OrthonormalTriangularDecomposition
Matrix matrix
matrix:SetSize(3,3)
matrix:Set(0,0,12.0)
matrix:Set(1,0,6)
matrix:Set(2,0,-4)
matrix:Set(0,1,-51)
matrix:Set(1,1,167)
matrix:Set(2,1,24)
matrix:Set(0,2,4)
matrix:Set(1,2,-68)
matrix:Set(2,2,-41)
OrthonormalTriangularDecomposition decomp
decomp:Calculate(matrix)
Matrix value = decomp:GetResult()
output value:ToText()
```

#### Parameters

- Libraries.Compute.Matrix: This is the matrix to decompose.

### Compare(Libraries.Language.Object object)

This action compares two object hash codes and returns an integer. The result is larger if this hash code is larger than the object passed as a parameter, smaller, or equal. In this case, -1 means smaller, 0 means equal, and 1 means larger. This action was changed in Quorum 7 to return an integer, instead of a CompareResult object, because the previous implementation was causing efficiency issues.

**Example Code**

```
Object o
Object t
integer result = o:Compare(t) //1 (larger), 0 (equal), or -1 (smaller)
```

#### Parameters

- Libraries.Language.Object: The object to compare to.

#### Return

integer: The Compare result, Smaller, Equal, or Larger.

### Equals(Libraries.Language.Object object)

This action determines if two objects are equal based on their hash code values.

**Example Code**

```
use Libraries.Language.Object
use Libraries.Language.Types.Text
Object o
Text t
boolean result = o:Equals(t)
```

#### Parameters

- Libraries.Language.Object: The to be compared.

#### Return

boolean: True if the hash codes are equal and false if they are not equal.

### GetHashCode()

This action gets the hash code for an object.

**Example Code**

```
Object o
integer hash = o:GetHashCode()
```

#### Return

integer: The integer hash code of the object.

### GetOrthonormalMatrix()

This action gets the orthonormal matrix.

#### Return

### GetOrthonormalTransposedMatrix()

This action gets the orthonormal matrix.

#### Return

### GetResult()

This action gets the orthonormal matrix.

#### Return

### GetUpperTriangularMatrix()

This action returns the upper triangular matrix.

#### Return

### Solve(Libraries.Compute.Vector vector)

fill it with zero