# Enumeration Types

This section lists the enumeration types defined in the Extreme Optimization Numerical Libraries for .NET.

## AlgorithmStatus

Enumerates the possible result codes for classes that inherit from ManagedIterativeAlgorithm<T> class.

Member Name | Description |
---|---|

NoResult | The algorithm has not been executed. |

Busy | The algorithm has not yet ended. |

Converged | The algorithm has converged. |

ConvergedToFalseSolution | The algorithm converged, but the result is not a solution of the problem. |

IterationLimitExceeded | The maximum number of iterations was exceeded. |

EvaluationLimitExceeded | The maximum number of function evaluations was exceeded. |

RoundOffError | Round-off prevented the algorithm from achieving a result within the desired tolerance. |

BadFunction | A badly behaved function prevented the algorithm from achieving a result within the desired tolerance. |

Divergent | the algorithm diverges. |

## ConvergenceCriterion

Enumerates possible values for the ConvergenceCriterion property of classes that inherit from the IterativeAlgorithm class or the ConvergenceTest<T> class.

Member Name | Description |
---|---|

WithinAbsoluteTolerance | The result should be within the tolerance specified by the AbsoluteTolerance property. |

WithinRelativeTolerance | The result should be within the tolerance specified by the RelativeTolerance property. |

WithinAnyTolerance | The result should be within either of the tolerances specified by the AbsoluteTolerance and RelativeTolerance properties. |

NumberOfIterations | Convergence should be expected at the specified by the MaxIterations property. The estimated error is ignored. |

## ConvergenceTestQuantifier

Enumerates the possible ways tests in a ConvergenceTestCollection<T> are combined.

Member Name | Description |
---|---|

Any | The convergence test succeeds if any of the tests in the collection succeeds. |

All | The convergence test succeeds if all of the tests in the collection succeed. |

## DifferencesDirection

Enumerates the possible values that specify the type of divided differences to be used in numerical differentiation.

Member Name | Description |
---|---|

Backward | Only function values at the target point and to the left of the target point are used. |

Central | Function values at the target point and on both sides of the target point are used. |

Forward | Only function values at the target point and to the right of the target point are used. |

## CloningMethod

Enumerates the methods that can be used to clone a Vector<T> or Matrix<T>.

Member Name | Description |
---|---|

Complete | Makes an exact clone of the object. |

NonzeroElementsWriteable | Makes a copy of the object such that all non-zero elements are writable. |

AllElementsWriteable | Makes a copy of the object such that all elements are writable. |

## ConjugateGradientMethod

Enumerates the variants of the conjugate gradient method. This enumeration is used by the Method property of the ConjugateGradientOptimizer class to specify the formula that is used to construct the next conjugate direction.

Member Name | Description |
---|---|

FletcherReeves | The method of Fletcher and Reeves |

PolakRibiere | The method of Polak and Ribiere |

PositivePolakRibiere | The method of Polak and Ribiere with positive coefficient. |

## DimensionType

Enumerates the possible values for the type of dimension in a DimensionMismatchException.

Member Name | Description |
---|---|

Unknown | The mismatched dimension is unknown. |

Row | The number of rows of a Matrix<T> is mismatched. |

Column | The number of columns of a Matrix<T> is mismatched. |

Length | The length of a Vector<T> is mismatched. |

## ExtremumType

Enumerates the possible values for the type of extremum an optimizer is to look for.

Member Name | Description |
---|---|

Minimum | A minimum of the objective function is requested. (This is the default.) |

Maximum | A maximum of the objective function is requested. |

## LeastSquaresSolutionMethod

Enumerates the possible methods for solving a least squares problem.

Member Name | Description |
---|---|

NormalEquations | Use the normal equations computed from the input. |

QRDecomposition | Use a QR decomposition of the input matrix. This is the default. |

SingularValueDecomposition | Use a singular value decomposition. This is the most stable and reliable method, but also the slowest. |

## LinearLeastSquaresMethod

Enumerates the possible methods for solving a least squares problem. This enumeration is used by the LinearCurveFitter class to specify how the least squares solution is to be calculated.

Member Name | Description |
---|---|

NormalEquations | Use the normal equations computed from the input. |

QRDecomposition | Use a QR decomposition of the input matrix. This is the most stable method. |

SingularValueDecomposition | Use a singular value decomposition. This is the most stable and reliable method, but also the slowest. |

## MatrixDiagonal

Represents the possible values that specify whether or not a Matrix<T> has 1's on its diagonal.

This enumeration corresponds to the DIAG parameter in the BLAS and LAPACK routines, and the CBLAS_DIAG enum in the CBLAS interface definition.

Member Name | Description |
---|---|

NonUnitDiagonal | The matrix is not unit-diagonal. |

UnitDiagonal | The matrix is unit-diagonal. |

## MatrixElementOrder

Represents the possible values for the order in which elements of a Matrix<T> are stored. The matrix elements must be contiguous in the storage array in the direction specified by this value.

This enumeration corresponds to the CBLAS_ORDER enum in the CBLAS interface definition.

Member Name | Description |
---|---|

RowMajor | The elements are stored in row major order. Elements in the same row are stored in one contiguous block. |

ColumnMajor | The elements are stored in column major order. Elements in the same column are stored in one contiguous block. |

NotApplicable | The element order is meaningless for the type of matrix. |

## MatrixOperationSide

Represents the possible values that specify on which side of the operator a Matrix<T> argument is to be multiplied. The value always refers to the side relative to the current instance.

This enumeration corresponds to the SIDE parameter in the BLAS and LAPACK routines, and the CBLAS_SIDE enum in the CBLAS interface definition.

Member Name | Description |
---|---|

Left | The Matrix<T> is to be multiplied on the left side. |

Right | The Matrix<T> is to be multiplied on the right side. |

## MatrixTriangle

Represents the possible values specifying a triangular part of a matrix. It is used to specify whether a triangular matrix is upper or lower triangular, and to specify which part of a symmetric or Hermitian matrix is stored.

This enumeration corresponds to the UPLO parameter in the BLAS and LAPACK routines, and the CBLAS_UPLO enum in the CBLAS interface definition.

Member Name | Description |
---|---|

Upper | The matrix is upper triangular, or the matrix elements are stored in the upper triangular portion of the storage array. |

Lower | The matrix is lower triangular, or the matrix elements are stored in the lower triangular portion of the storage array. |

Both | Both upper and lower diagonal elements are present. |

## QuasiNewtonMethod

Enumerates the variants of the quasi-Newton method.

Member Name | Description |
---|---|

Bfgs | The Broyden-Fletcher-Goldfard-Shanno method. (This is the default.) |

Dfp | The Davidon-Fletcher-Powell method. |

## SingularValueDecompositionFactors

Represents the possible values specifying which factors of a SingularValueDecomposition<T> are to be computed.

Member Name | Description |
---|---|

SingularValues | The singular values are required. This is always included. |

LeftSingularVectors | The left singular vectors are required. |

RightSingularVectors | The right singular vectors are required. |

All | The singular values as well as the left and right singular vectors are required. |

## TransposeOperation

Represents the possible values of an operation to be performed on a Matrix<T> before it is multiplied.

This enumeration corresponds to the TRANS parameters in the BLAS and LAPACK routines, and the CBLAS_TRANSPOSE enum in the CBLAS interface definition.

Member Name | Description |
---|---|

None | No operation is performed. The matrix is multiplied 'as is.' |

Transpose | The transpose of the matrix is multiplied. |

ConjugateTranspose | The conjugate transpose of the matrix is multiplied. For real matrices, this is the same as Transpose. |

Conjugate | The conjugate of the matrix is multiplied. For real matrices, this is the same as None. |

## VectorConvergenceErrorMeasure

Enumerates the ways to measure the error in a VectorConvergenceTest<T>.

Member Name | Description |
---|---|

Norm | Use the norm of the error vector as the measure. |

Elementwise | Calculate the errors on individual elements. |

## VectorConvergenceNorm

Enumerates the possible norms to be used in a VectorConvergenceTest<T>.

Member Name | Description |
---|---|

EuclideanNorm | Use the Euclidean (two-norm). |

Maximum | Use the maximum absolute value (infinity norm). |

SumOfAbsoluteValues | Use the sum of the absolute values (one norm). |