[BACK]Return to transformations.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Implift

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>