Next: Rohn simplification procedure Up: Regularity of parametric interval Previous: Regularity of parametric interval   Contents

## Implementation

```
int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
int (* A_Cond)(int dimA,INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),INTERVAL_VECTOR & v_IS,INTERVAL_MATRIX &K),
INTERVAL_MATRIX (* A_Cond_Left)(INTERVAL_VECTOR & v_IS_Left),
INTERVAL_MATRIX (* A_Cond_Right)(INTERVAL_VECTOR & v_IS_Right),
INTERVAL Determinant_Matrix(INTERVAL_MATRIX &A,INTERVAL_VECTOR &X),
INTERVAL Determinant_A_Cond_Left(INTERVAL_MATRIX &A,INTERVAL_VECTOR &X),
INTERVAL Determinant_A_Cond_Right(INTERVAL_MATRIX &A,INTERVAL_VECTOR &X),
int Type_Cond,
INTEGER_VECTOR &Type_Determinant,
int Iteration,
INTERVAL_VECTOR &X,
int (* Simp)(int dimA,INTERVAL_MATRIX & Acond,INTERVAL_VECTOR
& v_IS))
```
where
• dimA: the dimension of the matrix
• Func: a procedure that allows to compute the entries of the matrix, row by row. Func(l1,l2,X) computes the element at row l1, column l2 of the matrix for the input X
• A_Cond: a procedure that compute a conditioning matrix. K. It returns 1 if the conditioning matrix has been calculated, 0 otherwise. You may use the built-in procedure ALIAS_A_Cond_Mid that calculate the scalar matrix for the mid point of the input parameters and returns its inverse. If you don't intend to use conditioning you may use the dummy procedure ALIAS_A_Cond_Void that just returns 0. In that case the procedure that should be used to calculated the conditioned matrix may be ALIAS_Cond_Void
• A_Conf_Left: a procedure to compute the lefts conditioned matrix AK. It takes as input a vector constituted first of the elements of X followed by the elements of K, arranged row by row. If no such procedure is available the dummy procedure ALIAS_A_Cond_Void may be used.
• A_Conf_Right: a procedure to compute the lefts conditioned matrix KA. It takes as input a vector constituted first of the elements of X followed by the elements of K, arranged row by row. If no such procedure is available the dummy procedure ALIAS_A_Cond_Void may be used.
• Type_Cond: indicates how the conditioning is used: 0 if no conditioning is used, 1 if AK is being used, 2 if KA is used and 3 if both AK and KA are used
• Type_Det: an integer of dimension 3 that indicates which procedure is used to calculate the determinant. The value of the integer is 1 for Fast_Determinant, 2 for Medium_Determinant and 3 for Slow_Determinant. The first integer is for A, the second for AK and the third for KA
• Iteration: the maximum number of boxes that will be used by the algorithm
• X: the ranges for the input parameters
• Simp: a user supplied simplification procedure that returns -1 if all the matrices for the input parameter X are regular. If no such procedure is available you may use the dummy procedure ALIAS_Simp_Matrix_Void
This procedure returns 1 if all matrices are regular, -1 if a singular matrix has been found, -2 if the algorithm has failed and -3 if the regularity cannot be ascertained as for a scalar input X the sign of the determinant cannot be ascertained.

The flag Simp_In_Cond may be used to design the simplification procedure. It is set to 0 when the simplification procedure is used to check the initial matrix , to -1 or -2 when testing the regularity of the conditioning matrix, to 1 when testing the regularity of AK and to 2 for KA.

This procedure may also be used with the following syntaxes:

```
int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
int (* A_Cond)(int dimA,INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),INTERVAL_VECTOR & v_IS,INTERVAL_MATRIX &A),
INTERVAL_MATRIX (* A_Cond_Left)(INTERVAL_VECTOR & v_IS_Left),
INTERVAL_MATRIX (* A_Cond_Right)(INTERVAL_VECTOR & v_IS_Right),
INTERVAL Determinant_Matrix(INTERVAL_MATRIX &A,INTERVAL_VECTOR &X),
INTERVAL Determinant_A_Cond_Left(INTERVAL_MATRIX &A,INTERVAL_VECTOR &X),
INTERVAL Determinant_A_Cond_Right(INTERVAL_MATRIX &A,INTERVAL_VECTOR &X),
int Type_Cond,
INTEGER_VECTOR &Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain)

int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
int (* A_Cond)(int dimA,INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),INTERVAL_VECTOR & v_IS,INTERVAL_MATRIX &A),
INTERVAL_MATRIX (* A_Cond_Left)(INTERVAL_VECTOR & v_IS_Left),
INTERVAL_MATRIX (* A_Cond_Right)(INTERVAL_VECTOR & v_IS_Right),
int Type_Cond,
INTEGER_VECTOR &Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain,
int (* Simp)(int dimA,INTERVAL_MATRIX & Acond,INTERVAL_VECTOR
& v_IS))

int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
int Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain)

int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
int Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain,
int (* Simp)(int dimA,INTERVAL_MATRIX & Acond,INTERVAL_VECTOR
&v_IS))

int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
int (* A_Cond)(int dimA,INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),INTERVAL_VECTOR & v_IS,INTERVAL_MATRIX &A),
INTERVAL_MATRIX (* A_Cond_Left)(INTERVAL_VECTOR & v_IS_Left),
INTERVAL_MATRIX (* A_Cond_Right)(INTERVAL_VECTOR & v_IS_Right),
int Type_Cond,
INTEGER_VECTOR &Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain)

int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
INTERVAL_MATRIX (* A_Cond_Left)(INTERVAL_VECTOR & v_IS_Left),
INTERVAL_MATRIX (* A_Cond_Right)(INTERVAL_VECTOR & v_IS_Right),
int Type_Cond,
INTEGER_VECTOR &Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain)

int Matrix_Is_Regular(int dimA,
INTERVAL_VECTOR (* Func)(int l1, int l2,INTERVAL_VECTOR & v_IS),
INTERVAL_MATRIX (* A_Cond_Left)(INTERVAL_VECTOR & v_IS_Left),
INTERVAL_MATRIX (* A_Cond_Right)(INTERVAL_VECTOR & v_IS_Right),
int Type_Cond,
INTEGER_VECTOR &Type_Determinant,
int Iteration,
INTERVAL_VECTOR &Domain,
int (* Simp)(int dimA,INTERVAL_MATRIX & Acond,INTERVAL_VECTOR
&v_IS))
```
Note that the 3B method is implemented as a built-in procedure called ALIAS_3B_Regular_Matrix, but is usually not very efficient.

Next: Rohn simplification procedure Up: Regularity of parametric interval Previous: Regularity of parametric interval   Contents
Jean-Pierre Merlet 2012-12-20