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

File: [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Implift / transformations.ads (download)

Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:29 2000 UTC (23 years, 7 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD
Changes since 1.1: +0 -0 lines

Import the second public release of PHCpack.

OKed by Jan Verschelde.

with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
with Standard_Integer_VecVecs;           use Standard_Integer_VecVecs;
with Standard_Integer_Matrices;          use Standard_Integer_Matrices;
with Standard_Complex_Vectors;

package Transformations is

-- DESCRIPTION :
--   This package implements monomial transformations.

  type Transfo is private;

-- CONSTRUCTORS :

  function Id ( n : natural ) return Transfo;

  -- DESCRIPTION :
  --   Returns the identical transformation.

  function Create ( v : Vector; i : integer ) return Transfo;

  -- DESCRIPTION :
  --   returns a transformation T such that after w = Apply(T,v),
  --   there exists a j /= i: w(i) = 1 and w(j) = 0;
  --   if v(i) = 0, then the identity transformation will be returned;
  --   T is an isomorphism.

  function Create ( v : VecVec ) return Transfo;

  -- DESCRIPTION :
  --   returns a transformation T, where v(i) is the image of
  --   the i-th basis vector, for i in da'range.

  function Create ( m : Matrix ) return Transfo;

  -- DESCRIPTION :
  --   Returns the transformation defined by the matrix m.
  --   Apply(Create(m),v) = m*v.

  function Rotate ( v : Vector; i : integer ) return Transfo;
  function Rotate ( v : Link_to_Vector; i : integer ) return Transfo;

  -- DESCRIPTION :
  --   Returns a transformation T which will reduce v into e_i;
  --   if v(i) /= 0; T is an isomorphism.

  function Build_Transfo ( v : Vector; i : integer ) return Transfo;
  function Build_Transfo ( v : Link_to_Vector; i : integer ) return Transfo;

  -- DESCRIPTION :
  --   Returns a transformation T so that for all vectors x
  --   < x , v > = pv, after application of T on all x, the
  --   following holds: x(i) = pv / d, where d is the gcd of
  --   the components of v; T is an isomorphism.

-- SELECTORS :

  function Dimension ( t : Transfo ) return natural;

  -- DESCRIPTION :
  --   Returns the dimension of the transformation.

  function Sign ( t : Transfo ) return integer;

  -- DESCRIPTION :
  --   Returns the determinant of the matrix representation of t,
  --   which is either +1 or -1.

-- OPERATIONS :

  function Transpose ( t : Transfo ) return Transfo;

  -- DESCRIPTION :
  --   Returns the transposed transformation.

  function Invert ( t : Transfo ) return Transfo;

  -- DESCRIPTION :
  --   Computes the inverse transformation of t;
  --   after t1 := Invert(t), t1*t = t*t1 = Id.

  -- REQUIRED : t is an isomorphism.

  function "*" ( t1,t2 : Transfo ) return Transfo;

  -- DESCRIPTION :
  --   Returns t1 after t2

  procedure Mult1 ( t1 : in out Transfo; t2 : in Transfo );

  -- DESCRIPTION :
  --   t1 := t1 * t2;  but with an efficient memory management

  procedure Mult2 ( t1 : in Transfo; t2 : in out Transfo );

  -- DESCRIPTION :
  --   t2 := t1 * t2;  but with an efficient memory management

  function "*"( t : Transfo; v : Vector ) return Vector;  -- return t*v;
  function "*"( t : Transfo; v : Link_to_Vector ) return Link_to_Vector;
  procedure Apply ( t : in Transfo; v : in out Vector );  -- v := t*v;
  procedure Apply ( t : in Transfo; v : in out Link_to_Vector );

  function "*" ( t : Transfo; v : Standard_Complex_Vectors.Vector )
               return Standard_Complex_Vectors.Vector;
  procedure Apply ( t : in Transfo;
                    v : in out Standard_Complex_Vectors.Vector ); -- v := t*v;

-- DESTRUCTOR :

  procedure Clear ( t : in out Transfo );

  -- DESCRIPTION :
  --   Frees all allocated memory space

private

  type Transfo_tp;
  type Transfo is access Transfo_tp;

end Transformations;