with Standard_Complex_Polynomials; use Standard_Complex_Polynomials;
with Standard_Complex_Poly_Systems; use Standard_Complex_Poly_Systems;
package Homogenization is
-- DESCRIPTION :
-- This package provides routines for constructing additional
-- equations to a system for projective transformations.
-- There is also a routine that isolates the homogeneous part
-- of a given polynomial system.
function Homogeneous_Part ( p : Poly ) return Poly;
function Homogeneous_Part ( p : Poly_Sys ) return Poly_Sys;
-- DESCRIPTION :
-- These functions isolate all terms having a degree equal to
-- the degree of the polynomial.
function Add_Equations ( s1 : Poly_Sys; s2 : Poly_Sys ) return Poly_Sys;
-- DESCRIPTION :
-- The resulting polynomial system is the concatenation of s1 and s2.
function Add_Equation ( s : Poly_Sys; p : Poly ) return Poly_Sys;
-- DESCRIPTION :
-- the resulting polynomial system is the concatenation
-- of the system s and the polynomial p
function Add_Random_Hyperplanes
( s : Poly_Sys; m : natural; re : boolean ) return Poly_Sys;
-- DESCRIPTION :
-- To the polynomial system s, m hyperplanes are added with
-- randomly choosen coefficients;
-- if re = true
-- then the coefficients will be floating point numbers;
-- else the coefficients will be complex numbers.
function Add_Standard_Hyperplanes
( s : Poly_Sys; m : natural ) return Poly_Sys;
-- DESCRIPTION :
-- If n = Number_Of_Unknowns(s(i)), for i in s'range,
-- then m hyperplanes of the form
-- x_(j+n) - 1 = 0 will be added, for j in 1..m,
-- to the system s.
end Homogenization;