Annotation of OpenXM_contrib/PHC/Ada/Homotopy/multprec_complex_solutions.ads, Revision 1.1
1.1 ! maekawa 1: with Standard_Complex_Numbers;
! 2: with Standard_Complex_Solutions;
! 3: with Multprec_Floating_Numbers; use Multprec_Floating_Numbers;
! 4: with Generic_Lists;
! 5: with Multprec_Complex_Numbers; use Multprec_Complex_Numbers;
! 6: with Multprec_Complex_Vectors; use Multprec_Complex_Vectors;
! 7:
! 8: package Multprec_Complex_Solutions is
! 9:
! 10: -- DESCRIPTION :
! 11: -- This package provides an abstraction of a list and an array
! 12: -- of solutions as vectors of multi-precision complex numbers.
! 13:
! 14: -- DATA STRUCTURES :
! 15:
! 16: type Solution ( n : natural ) is record
! 17: t : Standard_Complex_Numbers.Complex_Number;
! 18: -- continuation parameter t
! 19: m : natural; -- multiplicity of the solution
! 20: v : Vector(1..n); -- the solution
! 21: err : Floating_Number; -- error = |correction| from Newton
! 22: rco : Floating_Number; -- inverse of condition number
! 23: res : Floating_Number; -- norm of residual vector
! 24: end record;
! 25:
! 26: type Link_to_Solution is access Solution;
! 27:
! 28: package List_of_Solutions is new Generic_Lists(Link_to_Solution);
! 29: type Solution_List is new List_of_Solutions.List;
! 30:
! 31: type Solution_Array is array ( positive range <> ) of Link_to_Solution;
! 32:
! 33: -- CREATORS :
! 34:
! 35: function Create ( sl : Solution_List ) return Solution_Array;
! 36: function Create ( sa : Solution_Array ) return Solution_List;
! 37:
! 38: -- DESCRIPTION :
! 39: -- Allows the transition from a list to an array and vice versa.
! 40:
! 41: function Create ( s : Standard_Complex_Solutions.Solution )
! 42: return Multprec_Complex_Solutions.Solution;
! 43:
! 44: -- DESCRIPTION :
! 45: -- Converts the solution as a standard complex vector into a
! 46: -- representation that uses multi-precision numbers.
! 47:
! 48: function Create ( l : Standard_Complex_Solutions.Solution_List )
! 49: return Multprec_Complex_Solutions.Solution_List;
! 50:
! 51: -- DESCRIPTION :
! 52: -- Converts the list of solutions as standard vectors into a
! 53: -- representation that uses multi-precision numbers.
! 54:
! 55: -- COMPARISON and COPYING :
! 56:
! 57: function Equal ( s1,s2 : Solution; tol : Floating_Number ) return boolean;
! 58:
! 59: -- DESCRIPTION :
! 60: -- Returns true if for each component
! 61: -- |s1.v(i)-s2.v(i)|/|s1.v(i)| < tol, for i in s1.v'range.
! 62:
! 63: function Equal ( s1,s2 : Solution_List; tol : Floating_Number )
! 64: return boolean;
! 65: function Equal ( s1,s2 : Solution_Array; tol : Floating_Number )
! 66: return boolean;
! 67:
! 68: -- DESCRIPTION :
! 69: -- Returns true if both lists of arrays are equal to each other, upon
! 70: -- the given tolerance for the relative error.
! 71:
! 72: procedure Equals ( sols : in out Solution_List; flag : in natural;
! 73: tol : in Floating_Number; same : out boolean );
! 74: -- DESCRIPTION :
! 75: -- The solutions that are equal to each other are marked with a flag.
! 76:
! 77: procedure Equals ( sa : in Solution_Array; x : in Vector; i : in natural;
! 78: tol : in Floating_Number; j : in out natural );
! 79: -- DESCRIPTION :
! 80: -- Compares the first i-1 vectors in sa with x.
! 81:
! 82: -- ON ENTRY :
! 83: -- sa a solution array, containing at least i-1 elements;
! 84: -- x a vector;
! 85: -- i an index, normally the entry of x in sa;
! 86: -- tol tolerance for relative error on two vectors;
! 87: -- j must be equal to sa'first.
! 88:
! 89: -- ON RETURN :
! 90: -- j the entry for which sa(j) equals x.
! 91:
! 92: procedure Copy ( s1 : in Solution; s2 : in out Solution );
! 93:
! 94: -- DESCRIPTION :
! 95: -- Makes a deep copy of the solution s1 into the solution s2.
! 96:
! 97: procedure Copy ( s1 : in Solution_List; s2 : in out Solution_List );
! 98: procedure Copy ( s1 : in Solution_Array; s2 : in out Solution_Array );
! 99:
! 100: -- DESCRIPTION :
! 101: -- Makes a deep copy of the list or the array of solutions.
! 102:
! 103: -- SELECTORS :
! 104:
! 105: function Number ( sols : Solution_List; flag : natural ) return natural;
! 106:
! 107: -- DESCRIPTION :
! 108: -- Returns the number of solutions in the list with a multiplicity
! 109: -- equal to flag.
! 110:
! 111: function Is_In ( sols : Solution_List; s : Solution; tol : Floating_Number )
! 112: return boolean;
! 113: function Is_In ( sa : Solution_Array; s : Solution; tol : Floating_Number )
! 114: return boolean;
! 115:
! 116: -- DESCRIPTION :
! 117: -- Returns true if the solution s belongs to the list or to the array.
! 118:
! 119: function Get ( sols : Solution_List; pos : positive ) return Solution;
! 120:
! 121: -- DESCRIPTION :
! 122: -- Returns the solution at the given position.
! 123:
! 124: -- REQUIRED : pos <= Length_Of(sols).
! 125:
! 126: -- CONSTRUCTORS :
! 127:
! 128: procedure Append ( first,last : in out Solution_List; s : in Solution );
! 129:
! 130: -- DESCRIPTION :
! 131: -- The solution sol is appended to the list first;
! 132: -- last is a pointer to the last element of the list first.
! 133:
! 134: procedure Add ( sols : in out Solution_List; s : in Solution );
! 135:
! 136: -- DESCRIPTION :
! 137: -- The solution sol is appended to the list sols.
! 138:
! 139: procedure Add ( sols : in out Solution_List; s : in Solution;
! 140: tol : in Floating_Number; other : out natural );
! 141:
! 142: -- DESCRIPTION :
! 143: -- Append the solution to the list, if it does not already belong to it.
! 144:
! 145: -- MODIFIERS :
! 146:
! 147: procedure Set_Size ( s : in out Solution; size : in natural );
! 148: procedure Set_Size ( ls : in out Link_to_Solution; size : in natural );
! 149: procedure Set_Size ( sols : in out Solution_List; size : in natural );
! 150:
! 151: -- DESCRIPTION :
! 152: -- Adjustment of the size of the numbers to the given size.
! 153:
! 154: procedure Change ( sols : in out Solution_List; pos : in positive;
! 155: s : in Solution; tol : in Floating_Number;
! 156: other : out natural );
! 157:
! 158: -- DESCRIPTION :
! 159: -- Changes the solution at the given position into s, if the solution
! 160: -- does not already occur.
! 161:
! 162: -- REQUIRED : pos <= Length_Of(sols).
! 163:
! 164: procedure Set_Continuation_Parameter
! 165: ( sols : in out Solution_List;
! 166: t : in Standard_Complex_Numbers.Complex_Number );
! 167:
! 168: -- DESCRIPTION :
! 169: -- All solutions in the list will be given the continuation parameter t.
! 170:
! 171: procedure Change_Multiplicity
! 172: ( sols : in out Solution_List; pos : in positive;
! 173: m : in natural );
! 174:
! 175: -- DESCRIPTION :
! 176: -- Changes the multiplicity of the solution with the given position
! 177: -- into m.
! 178:
! 179: -- REQUIRED : pos <= Length_Of(sols).
! 180:
! 181: procedure Remove ( sols : in out Solution_List; pos : in positive );
! 182:
! 183: -- DESCRIPTION :
! 184: -- Removes the solution with given position from the list.
! 185:
! 186: -- REQUIRED : pos <= Length_Of(sols).
! 187:
! 188: generic
! 189: with function To_Be_Removed ( flag : in natural ) return boolean;
! 190: procedure Delete ( sols : in out Solution_List );
! 191:
! 192: -- DESCRIPTION :
! 193: -- Removes all solutions in s for which To_Be_Removed(s.m) holds.
! 194:
! 195: procedure Remove_All ( sols : in out Solution_List; flag : in natural );
! 196:
! 197: -- DESCRIPTION :
! 198: -- All solutions with a multiplicity equal to flag are removed.
! 199:
! 200: -- DESTRUCTORS :
! 201:
! 202: procedure Clear ( sa : in out Solution_Array );
! 203: procedure Clear ( s : in out Solution );
! 204: procedure Clear ( ls : in out Link_to_Solution );
! 205: procedure Shallow_Clear ( sl : in out Solution_List );
! 206: procedure Deep_Clear ( sl : in out Solution_List );
! 207:
! 208: -- DESCRIPTION :
! 209: -- Deallocation of the occupied memory space.
! 210: -- A shallow clear only deallocates the pointers,
! 211: -- so that the data may still be accessible by sharing,
! 212: -- whereas a deep clear also makes the data inaccessible.
! 213:
! 214: end Multprec_Complex_Solutions;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>