Class

CGAL::Algebraic_kernel_d_2<Coeff>

#include <CGAL/Algebraic_kernel_d_2.h>

Definition

This class is based on an algorithm computing a geometric-topological analysis of a single curve [EKW07] and of a pair of curves [EK08]. The main idea behind both analyses is to compute the critical x-coordinates of curves and curve pairs by projection (resultants), and compute additional information about the critical fibers using subresultants and Sturm-Habicht sequences [GVRLR98]. With that information, the fiber at critical x-coordinates is computed by a variant of the Bitstream Descartes method. See also [Ker09] for a comprehensive description of these techniques.

A point p of type Algebraic_real_2 is represented by its x-coordinate x0 (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 ith point in the fiber at x0, counted from the bottom (ignoring a possible vertical line at x0). 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 time-consuming 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>.

Is Model for the Concepts

AlgebraicKernel_d_2.

Types

Algebraic_kernel_d_2<Coeff>::Coefficient
Same type as the template argument Coeff.


Algebraic_kernel_d_2<Coeff>::Polynomial_2
A model of AlgebraicKernel_d_2::Polynomial_2

.

Algebraic_kernel_d_2<Coeff>::Algebraic_real_2
A model of AlgebraicKernel_d_2::AlgebraicReal_2


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::BigInt this is CORE::BigRat
- leda_integer or leda_integer this is leda_rational


Algebraic_kernel_d_2<Coeff>::Multiplicity_type
The multiplicity type is int.

See Also

AlgebraicKernel_d_1
AlgebraicKernel_d_2
Polynomial_d
CGAL::Algebraic_kernel_d_2<Coeff>