with Standard_Floating_Numbers; use Standard_Floating_Numbers; with Standard_Complex_Solutions; use Standard_Complex_Solutions; package Continuation_Data is -- DESCRIPTION : -- In order to keep the parameters and variables manageble, -- they have been grouped into records. -- DATA STRUCTURES FOR PARAMETERS : type Pred_Pars is record -- contains the parameters for the predictor minstep,maxstep : double_float; -- minimum and maximum step size expfac,redfac : double_float; -- expansion and reduction factor -- for step length control success_steps : natural; -- number of successful steps before expansion predictor_type : natural; -- type of predictor used dist_target : double_float; -- distance to target power : positive; -- power of t in (polyhedral) homotopy end record; type Corr_Pars is record -- contains the parameters for the corrector epsrx,epsax,epsrf,epsaf : double_float; -- desired precisions for x and its residual f(x) -- once relative (r) and once absolute (a) maxit,maxtot : natural; -- maximum number of corrector iterations -- for one step and for the whole path end record; -- DATASTRUCTURES FOR VARIABLES : type Solu_Info is record -- contains information about the solution sol : Link_to_Solution; -- the solution: vector, t and multiplicity corr,cora,resr,resa,rcond : double_float; -- last correction (cor) and residual (res), -- once relative (r) and once absolute (a) -- and estimate for inverse condition of jacobian length_path : double_float; -- length of the path nstep,nfail,niter,nsyst : natural; -- various counters : -- number of steps, failures, corrector -- iterations and number of linear systems solved end record; type Solu_Info_Array is array ( integer range <> ) of Solu_Info; -- CREATERS : function Shallow_Create ( s : Link_to_Solution ) return Solu_Info; function Deep_Create ( s : Solution ) return Solu_Info; function Shallow_Create ( s : Solution_Array ) return Solu_Info_Array; function Deep_Create ( s : Solution_Array ) return Solu_Info_Array; function Shallow_Create ( s : Solution_List ) return Solu_Info_Array; function Deep_Create ( s : Solution_List ) return Solu_Info_Array; function Shallow_Create ( s : Solu_Info ) return Link_to_Solution; function Deep_Create ( s : Solu_Info ) return Solution; function Shallow_Create ( s : Solu_Info_Array ) return Solution_Array; function Deep_Create ( s : Solu_Info_Array ) return Solution_Array; function Shallow_Create ( s : Solu_Info_Array ) return Solution_List; function Deep_Create ( s : Solu_Info_Array ) return Solution_List; -- DESCRIPTION : -- A shallow create copies the pointer to the solution, while -- a deep create allocates memory for a copy of the solution. -- OPERATIONS ON Solu_Info : procedure Copy_Info ( s1 : in Solu_Info; s2 : in out Solu_Info ); procedure Copy_Solu ( s1 : in Solu_Info; s2 : in out Solu_Info ); procedure Copy ( s1 : in Solu_Info; s2 : in out Solu_Info ); -- DESCRIPTION : -- Copies the information, the solution or everything from s1 to s2. procedure Init_Info ( s : in out Solu_Info ); -- DESCRIPTION : -- Initializes the information of the solution. procedure Add_Info ( s1 : in out Solu_Info; s2 : in Solu_Info ); -- DESCRIPTION : -- Adds the information in the counters of s2 to s1. procedure Update_Info ( s1 : in out Solu_Info; s2 : in Solu_Info ); -- DESCRIPTION : -- Adds the information in the counters of s2 to s1 and copies the -- other information from s2 to s1. -- OPERATIONS ON Solu_Info_Array : procedure Copy ( s : in Solu_Info_Array; sa : in out Solution_Array ); procedure Copy ( sa : in Solution_Array; s : in out Solu_Info_Array ); -- DESCRIPTION : Copies s into sa or vice versa. -- DESTRUCTORS : procedure Clear ( s : in out Solu_Info ); procedure Clear ( s : in out Solu_Info_Array ); -- DESCRIPTION : -- This is clear is only needed after a deep create. end Continuation_Data;