Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/transformations.ads, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Integer_Vectors; use Standard_Integer_Vectors;
2: with Standard_Integer_VecVecs; use Standard_Integer_VecVecs;
3: with Standard_Integer_Matrices; use Standard_Integer_Matrices;
4: with Standard_Complex_Vectors;
5:
6: package Transformations is
7:
8: -- DESCRIPTION :
9: -- This package implements monomial transformations.
10:
11: type Transfo is private;
12:
13: -- CONSTRUCTORS :
14:
15: function Id ( n : natural ) return Transfo;
16:
17: -- DESCRIPTION :
18: -- Returns the identical transformation.
19:
20: function Create ( v : Vector; i : integer ) return Transfo;
21:
22: -- DESCRIPTION :
23: -- returns a transformation T such that after w = Apply(T,v),
24: -- there exists a j /= i: w(i) = 1 and w(j) = 0;
25: -- if v(i) = 0, then the identity transformation will be returned;
26: -- T is an isomorphism.
27:
28: function Create ( v : VecVec ) return Transfo;
29:
30: -- DESCRIPTION :
31: -- returns a transformation T, where v(i) is the image of
32: -- the i-th basis vector, for i in da'range.
33:
34: function Create ( m : Matrix ) return Transfo;
35:
36: -- DESCRIPTION :
37: -- Returns the transformation defined by the matrix m.
38: -- Apply(Create(m),v) = m*v.
39:
40: function Rotate ( v : Vector; i : integer ) return Transfo;
41: function Rotate ( v : Link_to_Vector; i : integer ) return Transfo;
42:
43: -- DESCRIPTION :
44: -- Returns a transformation T which will reduce v into e_i;
45: -- if v(i) /= 0; T is an isomorphism.
46:
47: function Build_Transfo ( v : Vector; i : integer ) return Transfo;
48: function Build_Transfo ( v : Link_to_Vector; i : integer ) return Transfo;
49:
50: -- DESCRIPTION :
51: -- Returns a transformation T so that for all vectors x
52: -- < x , v > = pv, after application of T on all x, the
53: -- following holds: x(i) = pv / d, where d is the gcd of
54: -- the components of v; T is an isomorphism.
55:
56: -- SELECTORS :
57:
58: function Dimension ( t : Transfo ) return natural;
59:
60: -- DESCRIPTION :
61: -- Returns the dimension of the transformation.
62:
63: function Sign ( t : Transfo ) return integer;
64:
65: -- DESCRIPTION :
66: -- Returns the determinant of the matrix representation of t,
67: -- which is either +1 or -1.
68:
69: -- OPERATIONS :
70:
71: function Transpose ( t : Transfo ) return Transfo;
72:
73: -- DESCRIPTION :
74: -- Returns the transposed transformation.
75:
76: function Invert ( t : Transfo ) return Transfo;
77:
78: -- DESCRIPTION :
79: -- Computes the inverse transformation of t;
80: -- after t1 := Invert(t), t1*t = t*t1 = Id.
81:
82: -- REQUIRED : t is an isomorphism.
83:
84: function "*" ( t1,t2 : Transfo ) return Transfo;
85:
86: -- DESCRIPTION :
87: -- Returns t1 after t2
88:
89: procedure Mult1 ( t1 : in out Transfo; t2 : in Transfo );
90:
91: -- DESCRIPTION :
92: -- t1 := t1 * t2; but with an efficient memory management
93:
94: procedure Mult2 ( t1 : in Transfo; t2 : in out Transfo );
95:
96: -- DESCRIPTION :
97: -- t2 := t1 * t2; but with an efficient memory management
98:
99: function "*"( t : Transfo; v : Vector ) return Vector; -- return t*v;
100: function "*"( t : Transfo; v : Link_to_Vector ) return Link_to_Vector;
101: procedure Apply ( t : in Transfo; v : in out Vector ); -- v := t*v;
102: procedure Apply ( t : in Transfo; v : in out Link_to_Vector );
103:
104: function "*" ( t : Transfo; v : Standard_Complex_Vectors.Vector )
105: return Standard_Complex_Vectors.Vector;
106: procedure Apply ( t : in Transfo;
107: v : in out Standard_Complex_Vectors.Vector ); -- v := t*v;
108:
109: -- DESTRUCTOR :
110:
111: procedure Clear ( t : in out Transfo );
112:
113: -- DESCRIPTION :
114: -- Frees all allocated memory space
115:
116: private
117:
118: type Transfo_tp;
119: type Transfo is access Transfo_tp;
120:
121: end Transformations;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>