\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - Algebraic Kernel

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::Algebraic_kernel_d_2< Coeff > Class Template Reference
Models

`#include <CGAL/Algebraic_kernel_d_2.h>`

## Definition

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 geometric-topological analysis of a single curve[5] and of a pair of curves[4]. 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[7]. With that information, the fiber at critical x-coordinates 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 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)

Advanced

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 Of:
  `AlgebraicKernel_d_2`

See Also
  `AlgebraicKernel_d_1`
  `AlgebraicKernel_d_2`
  `Polynomial_d`
  `CGAL::Algebraic_kernel_d_2<Coeff>`

## 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`.

## Member Typedef Documentation

template<typename Coeff >

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`