CGAL 4.14  Algebraic Kernel

#include <CGAL/Algebraic_kernel_d_2.h>
This class gathers necessary tools for solving and handling bivariate polynomial systems of general degree \( d\).
This class is based on an algorithm computing a geometrictopological analysis of a single curve [5] and of a pair of curves [4]. The main idea behind both analyses is to compute the critical xcoordinates of curves and curve pairs by projection (resultants), and compute additional information about the critical fibers using subresultants and SturmHabicht sequences [7]. With that information, the fiber at critical xcoordinates is computed by a variant of the Bitstream Descartes method. See also [8] for a comprehensive description of these techniques.
A point \( p\) of type Algebraic_real_2
is represented by its \( x\)coordinate \( x_0\) (as described in the Algebraic_kernel_d_1
paragraph above), an algebraic curve where \( p\) lies on, and an integer \( i\), denoting that \( p\) is the \( i\)th point in the fiber at \( x_0\), counted from the bottom (ignoring a possible vertical line at \( x_0\)). This determines the point uniquely, but the \( y\)coordinate is not stored internally in terms of an Algebraic_real_1
object. Querying such a representation by calling Compute_y_2
is a timeconsuming step, and should be avoided for efficiency reasons if possible. Note that this representation is not exposed in the interface.
The template argument Coeff
determines the coefficient type of the kernel, which is also the innermost coefficient type of the supported polynomials.
Currently, the following coefficient types are supported:
Gmpz
, Gmpq
, (requires configuration with external libraries GMP, MPFR and MPFI)CORE::BigInt
, CORE::BigRat
, (requires configuration with external library GMP)leda_integer
, leda_rational
. (requires configuration with external library LEDA)
The template argument type can also be set to Sqrt_extension<NT,ROOT>
, where NT
is one of the types listed above. ROOT
should be one of the integer types. See also the documentation of Sqrt_extension<NT,ROOT>
.
Types  
typedef unspecified_type  Coefficient 
Same type as the template argument Coeff .  
typedef unspecified_type  Polynomial_2 
A model of AlgebraicKernel_d_2::Polynomial_2  
typedef unspecified_type  Algebraic_real_2 
A model of AlgebraicKernel_d_2::AlgebraicReal_2  
typedef unspecified_type  Bound 
The choice of Coeff also determines the provided bound type. More...  
typedef unspecified_type  Multiplicity_type 
The multiplicity type is int .  
typedef unspecified_type CGAL::Algebraic_kernel_d_2< Coeff >::Bound 
The choice of Coeff
also determines the provided bound type.
In case of Coeff
is
Gmpz
or Gmpq
, this is Gmpq
CORE::BigInt
or CORE::BigRat
, this is CORE::BigRat
leda_integer
or leda_rational
, this is leda_rational