int Solve_General_JH_Interval(int Dimension_Var,int Dimension_Eq, INTEGER_VECTOR &Type_Eq, INTERVAL_VECTOR (* TheIntervalFunction)(int,int,INTERVAL_VECTOR &), INTERVAL_MATRIX (* Gradient)(int, int,INTERVAL_VECTOR &), INTERVAL_MATRIX (* Hessian)(int, int, INTERVAL_VECTOR &), INTERVAL_VECTOR & TheDomain, int Order, int Iteration, int Stop_First_Sol, double Accuracy_Variable, double Accuracy, INTERVAL_MATRIX & Solution, INTEGER_VECTOR & Is_Kanto, int Apply_Kanto, int Nb_Max_Solution,INTERVAL_MATRIX &Grad_Init, int (* Simp_Proc)(INTERVAL_VECTOR &), int (* Local_Newton)(int Dimension,int Dimension_Eq, INTERVAL_VECTOR (* TheIntervalFunction)(int,int,INTERVAL_VECTOR &), INTERVAL_MATRIX (* Gradient)(int, int, INTERVAL_VECTOR &), VECTOR &Input,double Accuracy,int Max_Iter, VECTOR &Residu,INTERVAL_VECTOR &In))the arguments being:

`m`: number of unknowns`n`: number of functions, see the note 2.3.4.1`Type_Eq`: type of the functions, see the note 2.3.4.2`IntervalFunction`: a function which return the interval vector evaluation of the functions, see the note 2.3.4.3. Remember that if you have equations and inequalities in the system you must first define the equations and then the inequalities.`IntervalGradient`: a function which return the interval matrix of the jacobian of the functions, see the note 2.4.2.2`IntervalHessian`: a function which return the interval matrix of the Hessian of the functions, see the note 2.5.2.1`TheDomain`: box in which we are looking for solution of the system. A copy of the search domain is available in the global variable`ALIAS_Init_Domain``Order`: the type of order which is used to store the intervals created during the bisection process. This order may be either`MAX_FUNCTION_ORDER`or`MAX_MIDDLE_FUNCTION_ORDER`. See the note on the order 2.3.4.4.`M`: the maximum number of boxes which may be stored. See the note 2.5.2.2`Stop`: the possible values are 0,1,2- 0: the algorithm will look for every solution in
`TheDomain` - 1: the algorithm will stop as soon as 1 solution has been found
- 2: the algorithm will stop as soon as
`Nb`solutions have been found

- 0: the algorithm will look for every solution in
`epsilon`: the maximal width of the box, see the note 2.3.4.6`epsilonf`: the maximal width of the function intervals, see the note 2.3.4.6`Solution`: an interval matrix of size (`Nb`,`m`) which will contained the solution intervals. Each solution may be:- a set of intervals with the associated flag
`IsKanto`to 0: - a set of intervals with the associated flag
`IsKanto`to 1: there is an unique solution in the set and Newton method will converge toward this solution - a set of intervals reduced to a point with the
associated flag
`IsKanto`to 0: this point is a solution which has been obtained with Krawczyk method (see 2.10). The accuracy of this solution may be improved by using the point as starting point for Krawczyk method and decreasing the accuracy`epsilonf`

- a set of intervals with the associated flag
`IsKanto`: an integer vector of dimension`Nb`. A value of 1 for`IsKanto(i)`indicate that applying Newton method (see section 2.9) with as estimate the center of the solution intervals`Solution(i)`will converge toward the unique solution which lie within the solution intervals`Solution(i)``ApplyKanto`: an integer which indicate at which level we use Kantorovitch theorem. If 1 we use Kantorovitch theorem (see section 3.1.2 and the mathematical background) to determine the solution. A consequence is that the solution interval may have a width larger than`epsilon`. If 0 we use Kantorovitch theorem just to separate the solutions: the solution interval will have a width`epsilon`. If 2 we will apply Newton method for every box which has not been eliminated during the bisection process but we will consider the result a solution only if it lie within the box. The maximal number of iteration is determined by the global variable`Max_Iter_Newton_JH_Interval`(by default 100). In that case we may miss solutions if they are lying inside the same box.`Nb`: the maximal number of solution which will be returned by the algorithm`GM`: an interval matrix which give a-priori information on the values of the derivatives of the function.`GM(i,j)`is the interval value of the derivative of function`i`with respect to variable`j``Simp_Proc`: a user-supplied procedure that take as input the current box and proceed to some further reduction of the width of the box or even determine that there is no solution for this box, in which case it should return -1 (see note 2.3.3). Remember that you may use the 3B method to improve the efficiency of this algorithm (see section 2.3.2).`Local_Newton`: a Newton scheme that is used when`Apply_Kanto`is set to 2. When omitted the algorithm will use the ALIAS Newton procedure (see section 2.9).

Note that the following arguments may be omitted:

`Type_Eq`: in that case all the functions will supposed to be equations.`GM`: in that case all the derivatives will supposed to be unknown`Simp_Proc`: no simplification procedure is provided by the user`Local_Newton`

The following variables play also a role in the computation:

`ALIAS_Store_Gradient`: if not 0 the gradient matrix of each box will be stored together with the boxes. Must be set to 0 for large problem (default value: 1)`ALIAS_Diam_Max_Gradient`: if the maximal width of the ranges in a box is lower than this value, then the gradient will be used to perform the interval evaluation of the functions (default value: 1.e10)`ALIAS_Diam_Max_Kraw`: if the maximal width of the ranges in a box is lower than this value, then the Krawczyk operator will be used to determine if there is a unique solution in the box (default value: 1.e10)`ALIAS_Diam_Max_Newton`: if the maximal width of the ranges in a box is lower than this value, then the interval Newton method will be used either to try to reduce the width of the box or to to ensure that there is no solution of the system in the box (default value: 1.e10)`ALIAS_Always_Use_Inflation`: if`ApplyKanto`is set to 1 we get for each solution a box which contains only one solution. If this flag is set to 1 we compute the solution using Newton and then we use an inflation procedure that try to determine a box which is larger than and contains also only one solution`ALIAS_Eps_Inflation`: the inflation algorithm will try to increase the width of the box by at least this value`ALIAS_Sing_Determinant`: if the determinant of the jacobian matrix of the system is lower than this value, then the system is supposed to be singular`ALIAS_Diam_Sing`: for a value of this parameter if there is singular solution in the system, then the algorithm will not look for solution of the system in a box of width 2 around the singular solution (default value: 0)`ALIAS_Use_Grad_Equation`: if this integer array has a size of`n`the derivatives of equation will be used to evaluate the i-th equation only if`ALIAS_Use_Grad_Equation[i]`is not 0`ALIAS_No_Hessian_Evaluation`: if set to 0 we will not use the Hessian to sharpen the interval evaluation of the Gradient when performing the interval evaluation of the equations. This may be useful if its known that the interval evaluation of the elements of the hessian will have always a constant sign

- Hessian procedure
- Storage
- Improvement of the function evaluation and of the Jacobian
- Return code and debug