CGAL 6.0 - 2D Arrangements
|
#include <CGAL/CORE_algebraic_number_traits.h>
CORE_algebraic_number_traits
is a traits class for CORE's algebraic number types.
Arr_conic_traits_2<RatKernel, AlgKernel, NtTraits>
Types | |
typedef CORE::BigInt | Integer |
The integer number type. | |
typedef CORE::BigRat | Rational |
The rational number type. | |
typedef CORE::Polynomial< Integer > | Polynomial |
The polynomial type. | |
typedef CORE::Expr | Algebraic |
The algebraic number type. | |
Utility Functions | |
Integer | numerator (const Rational &q) const |
obtains the numerator of a rational number. | |
Integer | denominator (const Rational &q) const |
obtains the denominator of a rational number. | |
Algebraic | convert (const Integer &z) const |
converts an integer to an algebraic number. | |
Algebraic | convert (const Rational &q) const |
converts a rational number to an algebraic number. | |
Rational | rational_in_interval (const Algebraic &x1, const Algebraic &x2) const |
constructs a rational number that lies strictly between two algebraic values. | |
std::pair< double, double > | double_interval (const Algebraic &x) const |
obtains a range of double-precision floats that contains the given algebraic number. | |
template<typename InputIterator , typename OutputIterator > | |
OutputIterator | convert_coefficients (InputIterator begin, InputIterator end, OutputIterator oi) const |
converts a sequence of rational coefficients to an equivalent sequence of integer coefficients. | |
Algebraic | sqrt (const Algebraic &x) const |
computes the square root of an algebraic number. | |
template<typename NT , typename OutputIterator > | |
OutputIterator | solve_quadratic_equation (const NT &a, const NT &b, const NT &c, OutputIterator oi) const |
computes the roots of a quadratic equations \(a*x^2+ b*x + c = 0\) with integer coefficients, and inserts them into an output container given through an output iterator. | |
Polynomial | construct_polynomial (const Integer *coeffs, unsigned int degree) const |
constructs a polynomial with integer coefficients. | |
bool | construct_polynomial (const Rational *coeffs, unsigned int degree, Polynomial &poly, Integer &poly_denom) const |
constructs a polynomial with integer coefficients given rational coefficients. | |
bool | construct_polynomials (const Rational *p_coeffs, unsigned int p_degree, const Rational *q_coeffs, unsigned int q_degree, Polynomial &p_poly, Polynomial &q_poly) const |
constructs two polynomials with integer coefficients such that \(P(x)/Q(x)\) is a rational function equivalent to the one represented by the two given vectors of rational coefficients. | |
int | degree (const Polynomial &poly) const |
Compute the degree of a polynomial. | |
template<typename NT > | |
NT | evaluate_at (const Polynomial &poly, NT &x) const |
evaluates a polynomial at a given \(x\)-value. | |
Polynomial | derive (const Polynomial &poly) const |
computes the derivative of the given polynomial. | |
Polynomial | scale (const Polynomial &poly, const Integer &a) const |
multiplies a polynomial by some scalar coefficient. | |
Polynomial | divide (const Polynomial &poly_a, const Polynomial &poly_b, Polynomial &rem) const |
performs "long division" of two polynomials: Given \(A(x)\) and \(B(x)\) compute two polynomials \(Q(x)\) and \(R(x)\) such that: \(A(x) = Q(x) \cdot B(x) + R(x)\) and \(R(x)\) has minimal degree. | |
template<typename OutputIterator > | |
OutputIterator | compute_polynomial_roots (const Polynomial &poly, OutputIterator oi) const |
computes the real-valued roots of a polynomial with integer coefficients, and inserts them in ascending order into an output container given through an output iterator. | |
template<typename OutputIterator > | |
OutputIterator | compute_polynomial_roots (const Polynomial &poly, double x_min, double x_max, OutputIterator oi) const |
computes the real-valued roots of a polynomial with integer coefficients within a given interval, and inserts them in ascending order into an output container given through an output iterator. | |
OutputIterator CGAL::CORE_algebraic_number_traits::compute_polynomial_roots | ( | const Polynomial & | poly, |
double | x_min, | ||
double | x_max, | ||
OutputIterator | oi | ||
) | const |
computes the real-valued roots of a polynomial with integer coefficients within a given interval, and inserts them in ascending order into an output container given through an output iterator.
poly | The input polynomial. |
x_min | The left bound of the interval. |
x_max | The right bound of the interval. |
oi | The output iterator of the output container of the real-valued root of the polynomial. |
oi
must yield an object convertible to Algebraic
. OutputIterator CGAL::CORE_algebraic_number_traits::compute_polynomial_roots | ( | const Polynomial & | poly, |
OutputIterator | oi | ||
) | const |
computes the real-valued roots of a polynomial with integer coefficients, and inserts them in ascending order into an output container given through an output iterator.
poly | The input polynomial. |
oi | The output iterator of the output container of real-valued root of the polynomial. |
oi
must yield an object convertible to Algebraic
. Polynomial CGAL::CORE_algebraic_number_traits::construct_polynomial | ( | const Integer * | coeffs, |
unsigned int | degree | ||
) | const |
constructs a polynomial with integer coefficients.
coeffs | The coefficients of the input polynomial. |
degree | The degree of the input polynomial. |
bool CGAL::CORE_algebraic_number_traits::construct_polynomial | ( | const Rational * | coeffs, |
unsigned int | degree, | ||
Polynomial & | poly, | ||
Integer & | poly_denom | ||
) | const |
constructs a polynomial with integer coefficients given rational coefficients.
coeffs | The coefficients of the input polynomial. |
degree | The degree of the input polynomial. |
poly | Output: The resulting polynomial with integer coefficients. |
poly_denom | Output: The denominator for the polynomial. |
bool CGAL::CORE_algebraic_number_traits::construct_polynomials | ( | const Rational * | p_coeffs, |
unsigned int | p_degree, | ||
const Rational * | q_coeffs, | ||
unsigned int | q_degree, | ||
Polynomial & | p_poly, | ||
Polynomial & | q_poly | ||
) | const |
constructs two polynomials with integer coefficients such that \(P(x)/Q(x)\) is a rational function equivalent to the one represented by the two given vectors of rational coefficients.
It is guaranteed that the GCD of \(P(x)\) and \(Q(x)\) is trivial.
p_coeffs | The coefficients of the input numerator polynomial. |
p_degree | The degree of the input numerator polynomial. |
q_coeffs | The coefficients of the input denominator polynomial. |
q_degree | The degree of the input denominator polynomial. |
p_poly | Output: The resulting numerator polynomial with integer coefficients. |
q_poly | Output: The resulting denominator polynomial with integer coefficients. |
true
on success; false
if the denominator is 0. converts an integer to an algebraic number.
z | The integer. |
z
. converts a rational number to an algebraic number.
q | A rational number. |
q
. OutputIterator CGAL::CORE_algebraic_number_traits::convert_coefficients | ( | InputIterator | begin, |
InputIterator | end, | ||
OutputIterator | oi | ||
) | const |
converts a sequence of rational coefficients to an equivalent sequence of integer coefficients.
If the input coefficients are \(q(1),\ldots,q(k)\), where \(q(i) = n(i)/d(i)\), then the output coefficients will be of the form: \(a(i) = \frac{n(i) \cdot \mathrm{lcm}(d(1),\ldots,d(k))}{d(i) \cdot \mathrm{gcd}(n(1),\ldots, n(k))}\). It inserts the output sequence into an output container given through an output iterator.
begin | The begin iterator of the rational coefficients input container. |
end | The past-the-end iterator of the rational coefficients input container. |
oi | The output iterator of the integer coefficients output container. |
InputIterator
is Rational
. oi
must yield an object convertible to Integer
. obtains the denominator of a rational number.
q | The rational number. |
q
. Polynomial CGAL::CORE_algebraic_number_traits::derive | ( | const Polynomial & | poly | ) | const |
computes the derivative of the given polynomial.
poly | The polynomial \(p(x)\). |
Polynomial CGAL::CORE_algebraic_number_traits::divide | ( | const Polynomial & | poly_a, |
const Polynomial & | poly_b, | ||
Polynomial & | rem | ||
) | const |
performs "long division" of two polynomials: Given \(A(x)\) and \(B(x)\) compute two polynomials \(Q(x)\) and \(R(x)\) such that: \(A(x) = Q(x) \cdot B(x) + R(x)\) and \(R(x)\) has minimal degree.
poly_a | The first polynomial \(A(x)\). |
poly_b | The second polynomial \(A(x)\). |
rem | Output: The remainder polynomial \(R(x)\). |
std::pair< double, double > CGAL::CORE_algebraic_number_traits::double_interval | ( | const Algebraic & | x | ) | const |
obtains a range of double-precision floats that contains the given algebraic number.
x | The given number. |
x
. NT CGAL::CORE_algebraic_number_traits::evaluate_at | ( | const Polynomial & | poly, |
NT & | x | ||
) | const |
evaluates a polynomial at a given \(x\)-value.
poly | The polynomial. |
x | The value to evaluate at. |
x
. obtains the numerator of a rational number.
q | The rational number. |
q
. Rational CGAL::CORE_algebraic_number_traits::rational_in_interval | ( | const Algebraic & | x1, |
const Algebraic & | x2 | ||
) | const |
constructs a rational number that lies strictly between two algebraic values.
x1 | The first algebraic value. |
x2 | The second algebraic value. |
x1
, x2
). Polynomial CGAL::CORE_algebraic_number_traits::scale | ( | const Polynomial & | poly, |
const Integer & | a | ||
) | const |
multiplies a polynomial by some scalar coefficient.
poly | The polynomial \(P(x)\). |
a | The scalar value. |
OutputIterator CGAL::CORE_algebraic_number_traits::solve_quadratic_equation | ( | const NT & | a, |
const NT & | b, | ||
const NT & | c, | ||
OutputIterator | oi | ||
) | const |
computes the roots of a quadratic equations \(a*x^2+ b*x + c = 0\) with integer coefficients, and inserts them into an output container given through an output iterator.
a | The coefficient of \(x^2\) |
b | The coefficient of \(x\) |
c | The free term. |
oi | The output iterator of the output container of real-valued solutions of the quadratic equation. |
oi
must yield an object convertible to Algebraic
.