mirror of https://github.com/CGAL/cgal
184 lines
6.0 KiB
TeX
184 lines
6.0 KiB
TeX
\begin{ccRefConcept}{AlgebraicStructureTraits}
|
|
|
|
|
|
\ccDefinition
|
|
|
|
A model of \ccc{AlgebraicStructureTraits} reflects the algebraic structure
|
|
of an associated type \ccc{Type}.
|
|
|
|
|
|
Depending on the concepts that \ccc{Type} fulfills,
|
|
it contains various functors and descriptive tags.
|
|
Moreover it gives access to the several possible
|
|
algebraic operations within that structure.
|
|
|
|
|
|
\ccTypes
|
|
\ccSetTwoColumns{xxxxxxxxxxxxxx}{}
|
|
A model of \ccc{AlgebraicStructureTraits} is supposed to provide:\\
|
|
|
|
\ccNestedType{Type} {The associated type.}
|
|
|
|
\ccNestedType{Algebraic_category}
|
|
{ Tag indicating the algebraic structure of the associated type. \\
|
|
|
|
\begin{tabular}{|l|l|}
|
|
\hline
|
|
Tag is: & \ccc{Type} is model of:\\
|
|
\hline
|
|
\ccc{CGAL::Null_tag} & no algebraic concept\\
|
|
\ccc{CGAL::Integral_domain_without_division_tag}& \ccc{IntegralDomainWithoutDivision}\\
|
|
\ccc{CGAL::Integral_domain_tag} & \ccc{IntegralDomain}\\
|
|
\ccc{CGAL::Unique_factorization_domain_tag} & \ccc{UniqueFactorizationDomain}\\
|
|
\ccc{CGAL::Euclidean_ring_tag} & \ccc{EuclideanRing}\\
|
|
\ccc{CGAL::Field_tag} & \ccc{Field}\\
|
|
\ccc{CGAL::Field_with_sqrt_tag} & \ccc{FieldWithSqrt}\\
|
|
\ccc{CGAL::Field_with_kth_root_tag} & \ccc{FieldWithKthRoot}\\
|
|
\ccc{CGAL::Field_with_root_of_tag} & \ccc{FieldWithRootOf}\\
|
|
\hline
|
|
\end{tabular}
|
|
}
|
|
|
|
\ccNestedType{Is_exact}
|
|
{ Tag indicating whether \ccc{Type} is exact. \\
|
|
This is either \ccc{CGAL::Tag_true} or \ccc{CGAL::Tag_false}.\\
|
|
An algebraic structure is considered exact, if all operations
|
|
required by its concept are computed such that a comparison
|
|
of two algebraic expressions is always correct.
|
|
The exactness covers only those operations that are required by
|
|
the algebraic structure concept. \\
|
|
e.g. an exact \ccc{Field} may have a \ccc{Sqrt} functor that
|
|
is not exact. \\
|
|
}
|
|
|
|
\ccNestedType{Is_numerical_sensitive}
|
|
{ Tag indicating whether \ccc{Type} is numerical sensitive. \\
|
|
This is either \ccc{CGAL::Tag_true} or \ccc{CGAL::Tag_false}.\\
|
|
An algebraic structure is considered as numerically sensitive,
|
|
if the performance of the type is sensitive to the condition
|
|
number of an algorithm.
|
|
}
|
|
|
|
\ccNestedType{Boolean}
|
|
{ This type specifies the return type of the predicates provided
|
|
by this traits. The type must be convertible to \ccc{bool} and
|
|
typically the type indeed maps to \ccc{bool}. However, there are also
|
|
cases such as interval arithmetic, in which it is \ccc{Uncertain<bool>}
|
|
or some similar type.
|
|
}
|
|
|
|
\ccHeading{Functors}
|
|
|
|
In case a functor is not provided, it is set to \ccc{CGAL::Null_functor}.
|
|
|
|
\ccNestedType{Is_zero}{
|
|
A model of \ccc{AlgebraicStructureTraits::IsZero}.\\
|
|
Required by the concept \ccc{IntegralDomainWithoutDivision}.
|
|
In case \ccc{Type} is also model of \ccc{RealEmbeddable} this is a
|
|
model of \ccc{RealEmbeddableTraits::IsZero}.
|
|
}
|
|
|
|
\ccNestedType{Is_one}{
|
|
A model of \ccc{AlgebraicStructureTraits::IsOne}.\\
|
|
Required by the concept \ccc{IntegralDomainWithoutDivision}.
|
|
}
|
|
|
|
\ccNestedType{Square}{
|
|
A model of \ccc{AlgebraicStructureTraits::Square}.\\
|
|
Required by the concept \ccc{IntegralDomainWithoutDivision}.
|
|
}
|
|
|
|
\ccNestedType{Simplify}{
|
|
A model of \ccc{AlgebraicStructureTraits::Simplify}.\\
|
|
Required by the concept \ccc{IntegralDomainWithoutDivision}.
|
|
}
|
|
|
|
\ccNestedType{Unit_part}{
|
|
A model of \ccc{AlgebraicStructureTraits::UnitPart}.\\
|
|
Required by the concept \ccc{IntegralDomainWithoutDivision}.
|
|
}
|
|
|
|
\ccNestedType{Integral_division}{
|
|
A model of \ccc{AlgebraicStructureTraits::IntegralDivision}.\\
|
|
Required by the concept \ccc{IntegralDomain}.
|
|
}
|
|
\ccNestedType{Divides}{
|
|
A model of \ccc{AlgebraicStructureTraits::Divides}.\\
|
|
Required by the concept \ccc{IntegralDomain}.
|
|
}
|
|
|
|
\ccNestedType{Is_square}{
|
|
A model of \ccc{AlgebraicStructureTraits::IsSquare}.\\
|
|
Required by the concept \ccc{IntegralDomainWithoutDivision}.
|
|
}
|
|
|
|
\ccNestedType{Gcd}{
|
|
A model of \ccc{AlgebraicStructureTraits::Gcd}.\\
|
|
Required by the concept \ccc{UniqueFactorizationDomain}.
|
|
}
|
|
|
|
|
|
\ccNestedType{Mod}{
|
|
A model of \ccc{AlgebraicStructureTraits::Mod}.\\
|
|
Required by the concept \ccc{EuclideanRing}.
|
|
}
|
|
|
|
\ccNestedType{Div}{
|
|
A model of \ccc{AlgebraicStructureTraits::Div}.\\
|
|
Required by the concept \ccc{EuclideanRing}.
|
|
}
|
|
\ccNestedType{Div_mod}{
|
|
A model of \ccc{AlgebraicStructureTraits::DivMod}.\\
|
|
Required by the concept \ccc{EuclideanRing}.
|
|
}
|
|
|
|
\ccNestedType{Inverse}{
|
|
A model of \ccc{AlgebraicStructureTraits::Inverse}.\\
|
|
Required by the concept \ccc{Field}.
|
|
}
|
|
|
|
\ccNestedType{Sqrt}{
|
|
A model of \ccc{AlgebraicStructureTraits::Sqrt}.\\
|
|
Required by the concept \ccc{FieldWithSqrt}.
|
|
}
|
|
|
|
%\begin{ccAdvanced}
|
|
\ccNestedType{Kth_root}{
|
|
A model of \ccc{AlgebraicStructureTraits::KthRoot}.\\
|
|
Required by the concept \ccc{FieldWithKthRoot}.
|
|
}
|
|
|
|
\ccNestedType{Root_of}{
|
|
A model of \ccc{AlgebraicStructureTraits::RootOf}.\\
|
|
Required by the concept \ccc{FieldWithRootOf}.
|
|
}
|
|
%\end{ccAdvanced}
|
|
|
|
%\ccHasModels
|
|
|
|
\ccSeeAlso
|
|
|
|
|
|
\ccRefIdfierPage{IntegralDomainWithoutDivision}\\
|
|
\ccRefIdfierPage{IntegralDomain}\\
|
|
\ccRefIdfierPage{UniqueFactorizationDomain}\\
|
|
\ccRefIdfierPage{EuclideanRing}\\
|
|
\ccRefIdfierPage{Field}\\
|
|
\ccRefIdfierPage{FieldWithSqrt}\\
|
|
\ccRefIdfierPage{FieldWithKthRoot}\\
|
|
\ccRefIdfierPage{FieldWithRootOf}\\
|
|
\\
|
|
\ccRefIdfierPage{CGAL::Integral_domain_without_division_tag}\\
|
|
\ccRefIdfierPage{CGAL::Integral_domain_tag}\\
|
|
\ccRefIdfierPage{CGAL::Unique_factorization_domain_tag}\\
|
|
\ccRefIdfierPage{CGAL::Euclidean_ring_tag}\\
|
|
\ccRefIdfierPage{CGAL::Field_tag}\\
|
|
\ccRefIdfierPage{CGAL::Field_with_sqrt_tag}\\
|
|
\ccRefIdfierPage{CGAL::Field_with_kth_root_tag}\\
|
|
\ccRefIdfierPage{CGAL::Field_with_root_of_tag}\\
|
|
|
|
\ccHasModels
|
|
\ccRefIdfierPage{CGAL::Algebraic_structure_traits<T>}\\
|
|
|
|
\end{ccRefConcept}
|