CGAL 4.5 - Algebraic Foundations
|
IntegralDomainWithoutDivision
IntegralDomain
UniqueFactorizationDomain
EuclideanRing
Field
FieldWithSqrt
FieldWithKthRoot
FieldWithRootOf
AlgebraicStructureTraits
AlgebraicStructureTraits_::IsZero
AlgebraicStructureTraits_::IsOne
AlgebraicStructureTraits_::Square
AlgebraicStructureTraits_::Simplify
AlgebraicStructureTraits_::UnitPart
AlgebraicStructureTraits_::IntegralDivision
AlgebraicStructureTraits_::Divides
AlgebraicStructureTraits_::Gcd
AlgebraicStructureTraits_::DivMod
AlgebraicStructureTraits_::Div
AlgebraicStructureTraits_::Mod
AlgebraicStructureTraits_::Inverse
AlgebraicStructureTraits_::Sqrt
AlgebraicStructureTraits_::IsSquare
AlgebraicStructureTraits_::KthRoot
AlgebraicStructureTraits_::RootOf
CGAL::Algebraic_structure_traits<T>
CGAL::Integral_domain_without_division_tag
CGAL::Integral_domain_tag
CGAL::Field_tag
CGAL::Field_with_sqrt_tag
CGAL::Unique_factorization_domain_tag
CGAL::Euclidean_ring_tag
CGAL::is_zero()
CGAL::is_one()
CGAL::square()
CGAL::simplify()
CGAL::unit_part()
CGAL::integral_division()
CGAL::is_square()
CGAL::gcd()
CGAL::div_mod()
CGAL::div()
CGAL::mod()
CGAL::inverse()
CGAL::sqrt()
CGAL::kth_root()
CGAL::root_of()
RealEmbeddable
RealEmbeddableTraits
RealEmbeddableTraits_::IsZero
RealEmbeddableTraits_::Abs
RealEmbeddableTraits_::Sgn
RealEmbeddableTraits_::IsPositive
RealEmbeddableTraits_::IsNegative
RealEmbeddableTraits_::Compare
RealEmbeddableTraits_::ToDouble
RealEmbeddableTraits_::ToInterval
CGAL::is_zero()
CGAL::abs()
CGAL::sign()
CGAL::is_positive()
CGAL::is_negative()
CGAL::compare()
CGAL::to_double()
CGAL::to_interval()
Fraction
FractionTraits
FractionTraits_::Decompose
FractionTraits_::Compose
FractionTraits_::CommonFactor
Modules | |
Concepts | |
Classes | |
class | CGAL::Algebraic_structure_traits< T > |
An instance of Algebraic_structure_traits is a model of AlgebraicStructureTraits , where T is the associated type. More... | |
class | CGAL::Euclidean_ring_tag |
Tag indicating that a type is a model of the EuclideanRing concept. More... | |
class | CGAL::Field_tag |
Tag indicating that a type is a model of the Field concept. More... | |
class | CGAL::Field_with_kth_root_tag |
Tag indicating that a type is a model of the FieldWithKthRoot concept. More... | |
class | CGAL::Field_with_root_of_tag |
Tag indicating that a type is a model of the FieldWithRootOf concept. More... | |
class | CGAL::Field_with_sqrt_tag |
Tag indicating that a type is a model of the FieldWithSqrt concept. More... | |
class | CGAL::Integral_domain_tag |
Tag indicating that a type is a model of the IntegralDomain concept. More... | |
class | CGAL::Integral_domain_without_division_tag |
Tag indicating that a type is a model of the IntegralDomainWithoutDivision concept. More... | |
class | CGAL::Unique_factorization_domain_tag |
Tag indicating that a type is a model of the UniqueFactorizationDomain concept. More... | |
class | CGAL::Coercion_traits< A, B > |
An instance of Coercion_traits reflects the type coercion of the types A and B, it is symmetric in the two template arguments. More... | |
class | CGAL::Fraction_traits< T > |
An instance of Fraction_traits is a model of FractionTraits , where T is the associated type. More... | |
class | CGAL::Real_embeddable_traits< T > |
An instance of Real_embeddable_traits is a model of RealEmbeddableTraits , where T is the associated type. More... | |
Functions | |
template<class NT > | |
NT | CGAL::abs (const NT &x) |
The template function abs() returns the absolute value of a number. More... | |
template<class NT1 , class NT2 > | |
result_type | CGAL::compare (const NT &x, const NT &y) |
The template function compare() compares the first argument with respect to the second, i.e. it returns CGAL::LARGER if \( x\) is larger then \( y\). More... | |
template<class NT1 , class NT2 > | |
result_type | CGAL::div (const NT1 &x, const NT2 &y) |
The function div() computes the integral quotient of division with remainder. More... | |
template<class NT1 , class NT2 > | |
void | CGAL::div_mod (const NT1 &x, const NT2 &y, result_type &q, result_type &r) |
computes the quotient \( q\) and remainder \( r\), such that \( x = q*y + r\) and \( r\) minimal with respect to the Euclidean Norm of the result_type . More... | |
template<class NT1 , class NT2 > | |
result_type | CGAL::gcd (const NT1 &x, const NT2 &y) |
The function gcd() computes the greatest common divisor of two values. More... | |
template<class NT1 , class NT2 > | |
result_type | CGAL::integral_division (const NT1 &x, const NT2 &y) |
The function integral_division() (a.k.a. exact division or division without remainder) maps ring elements \( (x,y)\) to ring element \( z\) such that \( x = yz\) if such a \( z\) exists (i.e. if \( x\) is divisible by \( y\)). More... | |
template<class NT > | |
NT | CGAL::inverse (const NT &x) |
The function inverse() returns the inverse element with respect to multiplication. More... | |
result_type | CGAL::is_negative (const NT &x) |
The template function is_negative() determines if a value is negative or not. More... | |
template<class NT > | |
result_type | CGAL::is_one (const NT &x) |
The function is_one() determines if a value is equal to 1 or not. More... | |
result_type | CGAL::is_positive (const NT &x) |
The template function is_positive() determines if a value is positive or not. More... | |
template<class NT > | |
result_type | CGAL::is_square (const NT &x) |
An ring element \( x\) is said to be a square iff there exists a ring element \( y\) such that \( x= y*y\). More... | |
template<class NT > | |
result_type | CGAL::is_square (const NT &x, NT &y) |
An ring element \( x\) is said to be a square iff there exists a ring element \( y\) such that \( x= y*y\). More... | |
template<class NT > | |
result_type | CGAL::is_zero (const NT &x) |
The function is_zero() determines if a value is equal to 0 or not. More... | |
template<class NT > | |
NT | CGAL::kth_root (int k, const NT &x) |
The function kth_root() returns the k-th root of a value. More... | |
template<class NT1 , class NT2 > | |
result_type | CGAL::mod (const NT1 &x, const NT2 &y) |
The function mod() computes the remainder of division with remainder. More... | |
template<class InputIterator > | |
NT | CGAL::root_of (int k, InputIterator begin, InputIterator end) |
returns the k-th real root of the univariate polynomial, which is defined by the iterator range, where begin refers to the constant term. More... | |
template<class NT > | |
result_type | CGAL::sign (const NT &x) |
The template function sign() returns the sign of its argument. More... | |
template<class NT > | |
void | CGAL::simplify (const NT &x) |
The function simplify() may simplify a given object. More... | |
template<class NT > | |
NT | CGAL::sqrt (const NT &x) |
The function sqrt() returns the square root of a value. More... | |
template<class NT > | |
NT | CGAL::square (const NT &x) |
The function square() returns the square of a number. More... | |
template<class NT > | |
double | CGAL::to_double (const NT &x) |
The template function to_double() returns an double approximation of a number. More... | |
template<class NT > | |
std::pair< double, double > | CGAL::to_interval (const NT &x) |
The template function to_interval() computes for a given real embeddable number \( x\) a double interval containing \( x\). More... | |
template<class NT > | |
NT | CGAL::unit_part (const NT &x) |
The function unit_part() computes the unit part of a given ring element. More... | |
NT CGAL::abs | ( | const NT & | x) |
The template function abs()
returns the absolute value of a number.
The function is defined if the argument type is a model of the RealEmbeddable
concept.
#include <CGAL/number_utils.h>
result_type CGAL::compare | ( | const NT & | x, |
const NT & | y | ||
) |
The template function compare()
compares the first argument with respect to the second, i.e. it returns CGAL::LARGER
if \( x\) is larger then \( y\).
In case the argument types NT1
and NT2
differ, compare
is performed with the semantic of the type determined via Coercion_traits
. The function is defined if this type is a model of the RealEmbeddable
concept.
The result_type
is convertible to CGAL::Comparison_result
.
#include <CGAL/number_utils.h>
result_type CGAL::div | ( | const NT1 & | x, |
const NT2 & | y | ||
) |
The function div()
computes the integral quotient of division with remainder.
In case the argument types NT1
and NT2
differ, the result_type
is determined via Coercion_traits
.
Thus, the result_type
is well defined if NT1
and NT2
are a model of ExplicitInteroperable
.
The actual div
is performed with the semantic of that type.
The function is defined if result_type
is a model of the EuclideanRing
concept.
#include <CGAL/number_utils.h>
void CGAL::div_mod | ( | const NT1 & | x, |
const NT2 & | y, | ||
result_type & | q, | ||
result_type & | r | ||
) |
computes the quotient \( q\) and remainder \( r\), such that \( x = q*y + r\) and \( r\) minimal with respect to the Euclidean Norm of the result_type
.
The function div_mod()
computes the integral quotient and remainder of division with remainder.
In case the argument types NT1
and NT2
differ, the result_type
is determined via Coercion_traits
.
Thus, the result_type
is well defined if NT1
and NT2
are a model of ExplicitInteroperable
.
The actual div_mod
is performed with the semantic of that type.
The function is defined if result_type
is a model of the EuclideanRing
concept.
#include <CGAL/number_utils.h>
result_type CGAL::gcd | ( | const NT1 & | x, |
const NT2 & | y | ||
) |
The function gcd()
computes the greatest common divisor of two values.
In case the argument types NT1
and NT2
differ, the result_type
is determined via Coercion_traits
.
Thus, the result_type
is well defined if NT1
and NT2
are a model of ExplicitInteroperable
.
The actual gcd
is performed with the semantic of that type.
The function is defined if result_type
is a model of the UniqueFactorizationDomain
concept.
#include <CGAL/number_utils.h>
result_type CGAL::integral_division | ( | const NT1 & | x, |
const NT2 & | y | ||
) |
The function integral_division()
(a.k.a. exact division or division without remainder) maps ring elements \( (x,y)\) to ring element \( z\) such that \( x = yz\) if such a \( z\) exists (i.e. if \( x\) is divisible by \( y\)).
Otherwise the effect of invoking this operation is undefined. Since the ring represented is an integral domain, \( z\) is uniquely defined if it exists.
In case the argument types NT1
and NT2
differ, the result_type
is determined via Coercion_traits
.
Thus, the result_type
is well defined if NT1
and NT2
are a model of ExplicitInteroperable
.
The actual integral_division
is performed with the semantic of that type.
The function is defined if result_type
is a model of the IntegralDomain
concept.
#include <CGAL/number_utils.h>
NT CGAL::inverse | ( | const NT & | x) |
result_type CGAL::is_negative | ( | const NT & | x) |
The template function is_negative()
determines if a value is negative or not.
The function is defined if the argument type is a model of the RealEmbeddable
concept.
The result_type
is convertible to bool
.
#include <CGAL/number_utils.h>
result_type CGAL::is_one | ( | const NT & | x) |
The function is_one()
determines if a value is equal to 1 or not.
The function is defined if the argument type is a model of the IntegralDomainWithoutDivision
concept.
The result_type
is convertible to bool
.
#include <CGAL/number_utils.h>
result_type CGAL::is_positive | ( | const NT & | x) |
The template function is_positive()
determines if a value is positive or not.
The function is defined if the argument type is a model of the RealEmbeddable
concept.
The result_type
is convertible to bool
.
#include <CGAL/number_utils.h>
result_type CGAL::is_square | ( | const NT & | x) |
An ring element \( x\) is said to be a square iff there exists a ring element \( y\) such that \( x= y*y\).
In case the ring is a UniqueFactorizationDomain
, \( y\) is uniquely defined up to multiplication by units.
The function is_square()
is available if Algebraic_structure_traits::Is_square
is not the CGAL::Null_functor
.
The result_type
is convertible to bool
.
#include <CGAL/number_utils.h>
result_type CGAL::is_square | ( | const NT & | x, |
NT & | y | ||
) |
An ring element \( x\) is said to be a square iff there exists a ring element \( y\) such that \( x= y*y\).
In case the ring is a UniqueFactorizationDomain
, \( y\) is uniquely defined up to multiplication by units.
The function is_square()
is available if Algebraic_structure_traits::Is_square
is not the CGAL::Null_functor
.
The result_type
is convertible to bool
.
#include <CGAL/number_utils.h>
result_type CGAL::is_zero | ( | const NT & | x) |
The function is_zero()
determines if a value is equal to 0 or not.
The function is defined if the argument type is a model of the RealEmbeddable
or of the IntegralDomainWithoutDivision
concept.
The result_type
is convertible to bool
.
RealEmbeddable
RealEmbeddableTraits_::IsZero
IntegralDomainWithoutDivision
AlgebraicStructureTraits_::IsZero
#include <CGAL/number_utils.h>
NT CGAL::kth_root | ( | int | k, |
const NT & | x | ||
) |
The function kth_root()
returns the k-th root of a value.
The function is defined if the second argument type is a model of the FieldWithKthRoot
concept.
#include <CGAL/number_utils.h>
result_type CGAL::mod | ( | const NT1 & | x, |
const NT2 & | y | ||
) |
The function mod()
computes the remainder of division with remainder.
In case the argument types NT1
and NT2
differ, the result_type
is determined via Coercion_traits
.
Thus, the result_type
is well defined if NT1
and NT2
are a model of ExplicitInteroperable
.
The actual mod
is performed with the semantic of that type.
The function is defined if result_type
is a model of the EuclideanRing
concept.
#include <CGAL/number_utils.h>
NT CGAL::root_of | ( | int | k, |
InputIterator | begin, | ||
InputIterator | end | ||
) |
returns the k-th real root of the univariate polynomial, which is defined by the iterator range, where begin refers to the constant term.
The function root_of()
computes a real root of a square-free univariate polynomial.
The function is defined if the value type, NT
, of the iterator range is a model of the FieldWithRootOf
concept.
#include <CGAL/number_utils.h>
result_type CGAL::sign | ( | const NT & | x) |
The template function sign()
returns the sign of its argument.
The function is defined if the argument type is a model of the RealEmbeddable
concept.
The result_type
is convertible to CGAL::Sign
.
#include <CGAL/number_utils.h>
void CGAL::simplify | ( | const NT & | x) |
The function simplify()
may simplify a given object.
The function is defined if the argument type is a model of the IntegralDomainWithoutDivision
concept.
#include <CGAL/number_utils.h>
NT CGAL::sqrt | ( | const NT & | x) |
The function sqrt()
returns the square root of a value.
The function is defined if the argument type is a model of the FieldWithSqrt
concept.
#include <CGAL/number_utils.h>
NT CGAL::square | ( | const NT & | x) |
The function square()
returns the square of a number.
The function is defined if the argument type is a model of the IntegralDomainWithoutDivision
concept.
#include <CGAL/number_utils.h>
double CGAL::to_double | ( | const NT & | x) |
The template function to_double()
returns an double approximation of a number.
The function is defined if the argument type is a model of the RealEmbeddable
concept.
Remark: In order to control the quality of approximation one has to resort to methods that are specific to NT. There are no general guarantees whatsoever.
#include <CGAL/number_utils.h>
std::pair<double,double> CGAL::to_interval | ( | const NT & | x) |
The template function to_interval()
computes for a given real embeddable number \( x\) a double interval containing \( x\).
This interval is represented by a std::pair<double,double>
. The function is defined if the argument type is a model of the RealEmbeddable
concept.
#include <CGAL/number_utils.h>
NT CGAL::unit_part | ( | const NT & | x) |
The function unit_part()
computes the unit part of a given ring element.
The function is defined if the argument type is a model of the IntegralDomainWithoutDivision
concept.
#include <CGAL/number_utils.h>