From 6c27d0f4061d21ccde0fe8b9accef01d67bc3c4f Mon Sep 17 00:00:00 2001 From: Pedro Machado Manhaes de Castro Date: Fri, 25 Aug 2006 10:47:55 +0000 Subject: [PATCH] Algebraic_kernel_for_circles (instead of Algebraic_kernel) --- .../AlgFunctorsConstruct.tex | 153 +++++++++++++++ .../AlgFunctorsPredicates.tex | 100 ++++++++++ .../AlgebraicKernelForCircles_2_2.tex | 76 ++++++++ .../AlgebraicKernel_4_2.tex | 37 ++++ .../Algebraic_kernel_for_circles_2_2.tex | 5 + .../Global_functions.tex | 183 ++++++++++++++++++ .../Polynomial_1.tex | 39 ++++ .../Polynomial_1_2.tex | 5 + .../Polynomial_2.tex | 53 +++++ .../Polynomial_for_circles_2_2.tex | 5 + .../RootCircle_2_2.tex | 32 +++ .../RootOf.tex | 59 ++++++ .../Root_for_circles_2_2.tex | 5 + .../Root_of_2.tex | 5 + .../Root_of_traits_2.tex | 13 ++ .../intro.tex | 121 ++++++++++++ .../Algebraic_kernel_for_circles_ref/main.tex | 23 +++ 17 files changed, 914 insertions(+) create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsConstruct.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsPredicates.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernelForCircles_2_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernel_4_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Algebraic_kernel_for_circles_2_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Global_functions.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_for_circles_2_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootCircle_2_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootOf.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_for_circles_2_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_traits_2.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/intro.tex create mode 100644 Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/main.tex diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsConstruct.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsConstruct.tex new file mode 100644 index 00000000000..caa5edbd0ba --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsConstruct.tex @@ -0,0 +1,153 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::ConstructPolynomial_1_2} + +\ccDefinition + +\ccCreationVariable{cpol} + +A model \ccVar\ of this type must provide: + +\ccMethod{AlgebraicKernelForCircles_2_2::Polynomial_1_2 + operator()(const AlgebraicKernelForCircles_2_2::RT a, + const AlgebraicKernelForCircles_2_2::RT b, + const AlgebraicKernelForCircles_2_2::RT c);} +{Constructs polynomial \ccc{ax+by+c}.} + +\end{ccRefConcept} + +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::ConstructPolynomialForCircles_2_2} + +\ccCreationVariable{cpol} + +A model \ccVar\ of this type must provide: + +\ccMethod{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 + operator()(const AlgebraicKernelForCircles_2_2::FT a, + const AlgebraicKernelForCircles_2_2::FT b, + const AlgebraicKernelForCircles_2_2::FT rsq);} +{Constructs polynomial \ccc{(x-a)^2 + (y-b)^2 - rsq}.} + +\end{ccRefConcept} + +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::Solve} + +\ccDefinition + +\ccCreationVariable{sol} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + OutputIterator + operator()(const AlgebraicKernelForCircles_2_2::Polynomial_1_2 &p1, + const AlgebraicKernelForCircles_2_2::Polynomial_1_2 &p2, + OutputIterator res);} +{Copies in the output iterator the common roots of \ccc{p1} and \ccc{p2}, with their multiplicity, as objects of type \ccc{std::pair< AlgebraicKernelForCircles_2_2::RootForCircles_2_2, int>}.} \footnote{???} + +\ccMethod{template < class OutputIterator > + OutputIterator + operator()(const AlgebraicKernelForCircles_2_2::Polynomial1_2 &p1, + const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p2, + OutputIterator res);} +{Same as previous.} + +\ccMethod{template < class OutputIterator > + OutputIterator + operator()(const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p1, + const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p2, + OutputIterator res);} +{Same as previous.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Solve;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::solve} + +\end{ccRefConcept} +\begin{ccRefConcept}{AlgebraicKernel_4_2::Solve} + +\ccDefinition + +\ccCreationVariable{sol} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + OutputIterator + operator()(const AlgebraicKernel_4_2::Polynomial_2_2 &p1, + const AlgebraicKernel_4_2::Polynomial_2_2 &p2, + OutputIterator res);} +{Copies in the output iterator the common roots of \ccc{p1} and \ccc{p2}, with their multiplicity, as objects of type \ccc{std::pair< AlgebraicKernel_4_2::RootOf_4, int>}.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Solve;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::solve} + +\end{ccRefConcept} + +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::XCriticalPoints} + +\ccDefinition + +\ccCreationVariable{xcrit} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + OutputIterator + operator()(const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p, + OutputIterator res);} +{Copies in the output iterator the \ccc{x}-critical points of polynomial +\ccc{p}, as objects of type \ccc{AlgebraicKernelForCircles_2_2::RootForCircles_2_2}.} + +\ccMethod{template < class OutputIterator > + AlgebraicKernelForCircles_2_2::RootForCircles_2_2 + operator()(const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p, + bool i);} +{Computes the \ccc{i}th \ccc{x}-critical point of polynomial \ccc{p}.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::X_critical_points;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::x_critical_points} + +\end{ccRefConcept} +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::YCriticalPoints} + +\ccDefinition + +\ccCreationVariable{ycrit} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + OutputIterator + operator()(const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p, + OutputIterator res);} +{Copies in the output iterator the \ccc{y}-critical points of polynomial +\ccc{p}, as objects of type \ccc{AlgebraicKernelForCircles_2_2::RootForCircles_2_2}.} + +\ccMethod{template < class OutputIterator > + AlgebraicKernelForCircles_2_2::RootForCircles_2_2 + operator()(const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 &p, + bool i);} +{Computes the \ccc{i}th \ccc{y}-critical point of polynomial \ccc{p}.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Y_critical_points;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::y_critical_points} + +\end{ccRefConcept} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsPredicates.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsPredicates.tex new file mode 100644 index 00000000000..2a78fbf1f50 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgFunctorsPredicates.tex @@ -0,0 +1,100 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::CompareX} + +\ccDefinition + +\ccCreationVariable{cmpx} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + CGAL::Comparison_result + operator()(const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r1, + const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r2);} +{Compares the \ccc{x} variables of two \ccc{RootForCircles_2_2}.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Compare_x;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::compare_x} + +\end{ccRefConcept} +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::CompareY} + +\ccDefinition + +\ccCreationVariable{cmpy} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + CGAL::Comparison_result + operator()(const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r1, + const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r2);} +{Compares the \ccc{y} variables of two \ccc{RootForCircles_2_2}.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Compare_y;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::compare_y} + +\end{ccRefConcept} +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::CompareXY} + +\ccDefinition + +\ccCreationVariable{cmpxy} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + CGAL::Comparison_result + operator()(const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r1, + const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r2);} +{Compares two \ccc{RootForCircles_2_2} lexicographically.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Compare_xy;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::compare_xy} + +\end{ccRefConcept} + +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::SignAt} + +\ccDefinition + +\ccCreationVariable{sign} + +A model \ccVar\ of this type must provide: + +\ccMethod{template < class OutputIterator > + CGAL::Sign + operator()(const AlgebraicKernelForCircles_2_2::Polynomial_1_2 & p, + const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r);} +{Computes the sign of polynomial \ccc{p} evaluated at a root \ccc{r}.} + +\ccMethod{template < class OutputIterator > + CGAL::Sign + operator()(const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 & p, + const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & r);} +{Same as previous.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2::Sign_at;} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::sign_at} + +\end{ccRefConcept} + diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernelForCircles_2_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernelForCircles_2_2.tex new file mode 100644 index 00000000000..7e3021a876e --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernelForCircles_2_2.tex @@ -0,0 +1,76 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2} + +\ccDefinition + +The \ccc{AlgebraicKernelForCircles_2_2} concept is meant to provide the +curved kernel with all the algebraic functionalities required for the +manipulation of circular arcs. + +\ccTypes + +A model of \ccc{AlgebraicKernelForCircles_2_2} is supposed to provide + +\ccNestedType{RT}{A model of \ccc{RingNumberType}. }%In addition, the +%class \ccc{Root_of_traits_2} must be defined and provide a nested +%type \ccc{Type} which must be the same as \ccc{Root_of_2} and a +%function \ccc{make_root_of_2(RT,RT,RT,bool)} whose return type is +%\ccc{Type}.} +\ccGlue +\ccNestedType{FT}{A model of \ccc{FieldNumberType}\ccc{}.} +\footnote{concept template...?} + +\ccNestedType{Polynomial_1_2}{A model of +\ccc{AlgebraicKernelForCircles_2_2::Polynomial_1_2}, for bivariate polynomials of degree up +to~1.} +\ccGlue +\ccNestedType{Polynomial_for_circles_2_2}{A model of +\ccc{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2}, for bivariate polynomials +of degree up to~2 that can store equations of circles.} + +\ccNestedType{Root_of_2}{A model of +\ccc{AlgebraicKernelForCircles_2_2::RootOf_2}, for algebraic numbers +of degree up to~2.} +\ccGlue +\ccNestedType{Root_for_circles_2_2}{A model of +\ccc{AlgebraicKernelForCircles_2_2::RootForCircles_2_2}, for +solutions of systems of two models of +\ccc{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2}.} + +\ccNestedType{Construct_polynomial_1_2}{A model of +\ccc{AlgebraicKernelForCircles_2_2::ConstructPolynomial_1_2}.} + \ccGlue +\ccNestedType{Construct_polynomial_for_circles_2_2}{A model of +\ccc{AlgebraicKernelForCircles_2_2::ConstructPolynomialForCircles_2_2}.} + +\ccNestedType{Solve}{A model of the concept \ccc{AlgebraicKernelForCircles_2_2::Solve}.} + +\ccNestedType{Sign_at}{A model of the concept \ccc{AlgebraicKernelForCircles_2_2::SignAt}.} + +\footnote{no \_2 (or \_2\_2) for functors ????????? problem of compatibility +with CK and the current kernel. On the other hand, allows to have only +one functor for several types of arguments} + +\ccNestedType{X_critical_points}{A model of the concept +\ccc{AlgebraicKernelForCircles_2_2::XCriticalPoints}.} +\ccGlue +\ccNestedType{Y_critical_points}{A model of the concept +\ccc{AlgebraicKernelForCircles_2_2::YCriticalPoints}.} + +\ccNestedType{Compare_x}{A model of the concept +\ccc{AlgebraicKernelForCircles_2_2::CompareX}.} +\ccGlue +\ccNestedType{Compare_y}{A model of the concept +\ccc{AlgebraicKernelForCircles_2_2::CompareY}.} +\ccGlue +\ccNestedType{Compare_xy}{A model of the concept +\ccc{AlgebraicKernelForCircles_2_2::CompareXY}.} + +\ccHasModels + +\ccc{Algebraic_kernel_for_circles_2_2} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::Curved_kernel} + +\end{ccRefConcept} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernel_4_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernel_4_2.tex new file mode 100644 index 00000000000..a744d0b5759 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/AlgebraicKernel_4_2.tex @@ -0,0 +1,37 @@ +\begin{ccRefConcept}{AlgebraicKernel_4_2} + +\ccDefinition + +The \ccc{AlgebraicKernel_4_2} concept is meant to provide the +curved kernel with all the algebraic functionalities required for the +manipulation of conic arcs. + +\ccTypes + +A model of \ccc{AlgebraicKernel_4_2} is supposed to provide + +\ccNestedType{RT}{A model of \ccc{RingNumberType}. In addition, the class \ccc{Root_of_traits_4} must be defined and provide a nested type \ccc{Type} which must be the same as \ccc{Root_of_4} and a function \ccc{make_root_of_4(RT,RT,RT,RT,RT,int)} whose return type is \ccc{Type}.}\footnote{\ccc{make_root_of_4} to be replaced by solve, since we don't always want a resultant...} +\ccGlue +\ccNestedType{FT}{A model of \ccc{FieldNumberType}.} \footnote{concept template...?} +\ccc{RT} is supposed to be \ccc{Rational_traits}. + +\ccNestedType{Root_of_4}{A model of \ccc{RootOf_4}, for algebraic numbers + of degree up to~4.} +\ccGlue +\ccNestedType{Polynomial_2_2}{A model of \ccc{Polynomial_2_2}, for bivariate polynomials of degree up to~2.} + +\ccNestedType{Construct_polynomial_2_2}{A model of \ccc{ConstructPolynomial_2_2.}} + +\ccNestedType{Solve}{A model of the concept \ccc{AlgebraicKernel_4_2::Solve}.} + +\ccHasModels + +\footnote{to be done} + +\ccSeeAlso + +\ccRefIdfierPage{Algebraic_kernel_4_2::RootOf_4}\\ +\ccRefIdfierPage{Algebraic_kernel_4_2::Polynomial_2_2}\\ +\ccRefIdfierPage{CGAL::Curved_kernel} + +\end{ccRefConcept} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Algebraic_kernel_for_circles_2_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Algebraic_kernel_for_circles_2_2.tex new file mode 100644 index 00000000000..780f11dca36 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Algebraic_kernel_for_circles_2_2.tex @@ -0,0 +1,5 @@ +\begin{ccRefClass}{Algebraic_kernel_for_circles_2_2} + +Model of \ccc{AlgebraicKernelForCircles_2_2} + +\end{ccRefClass} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Global_functions.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Global_functions.tex new file mode 100644 index 00000000000..4597d1b7766 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Global_functions.tex @@ -0,0 +1,183 @@ +%%%%%%%%%%%%%% predicates + +\begin{ccRefFunction}{compare_x} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2> + Comparison_result compare_x + (const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r1, + const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r2);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Compare_X}.} + +\ccSeeAlso + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::CompareX} + +\end{ccRefFunction} + +\begin{ccRefFunction}{compare_y} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2> + Comparison_result compare_y + (const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r1, + const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r2);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Compare_Y}.} + +\ccSeeAlso + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::CompareY} + +\end{ccRefFunction} + +\begin{ccRefFunction}{compare_xy} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2> + Comparison_result compare_xy + (const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r1, + const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r2);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Compare_XY}.} + +\ccSeeAlso + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::CompareXY} + +\end{ccRefFunction} + +\begin{ccRefFunction}{sign_at} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2, class OutputIterator > + OutputIterator sign_at + (const AlgebraicKernelForCircles_2_2::Polynomial_for_circles_2_2 &p, + const AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 &r);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Sign_at}.} + +\ccSeeAlso + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::SignAt} + +\end{ccRefFunction} + +%%%%%%%%%%%%%%%%%%%%%%%% constructions +\begin{ccRefFunction}{construct_polynomial_1_2} + +\ccDefinition + +\ccFunction{template < class AlgebraicKernelForCircles_2_2> + AlgebraicKernelForCircles_2_2::Polynomial_1_2 + construct_polynomial_1_2 + (AlgebraicKernelForCircles_2_2::RT a, + AlgebraicKernelForCircles_2_2::RT b, + AlgebraicKernelForCircles_2_2::RT c);} +{Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::ConstructPolynomial_1_2}.} + +\end{ccRefFunction} + +\begin{ccRefFunction}{construct_polynomial_for_circles_2_2} + +\ccDefinition + +\ccFunction{template < class AlgebraicKernelForCircles_2_2> + AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 + construct_polynomial_for_circles_2_2 + (AlgebraicKernelForCircles_2_2::RT a, + AlgebraicKernelForCircles_2_2::RT b, + AlgebraicKernelForCircles_2_2::RT c);} +{Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::ConstructPolynomialForCircles_2_2}.} + +\end{ccRefFunction} + +\begin{ccRefFunction}{solve} + +\ccDefinition + +\ccFunction{template < class AlgebraicKernelForCircles_2_2, class OutputIterator > + OutputIterator solve + (const AlgebraicKernelForCircles_2_2::Polynomial_1_2 &p1, + const AlgebraicKernelForCircles_2_2::Polynomial_1_2 &p2, + OutputIterator res);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Solve}.} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2, class OutputIterator > + OutputIterator solve + (const AlgebraicKernelForCircles_2_2::Polynomial_1_2 &p1, + const AlgebraicKernelForCircles_2_2::Polynomial_for_circles_2_2 &p2, + OutputIterator res);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Solve}.} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2, class OutputIterator > + OutputIterator solve + (const AlgebraicKernelForCircles_2_2::Polynomial_for_circles_2_2 &p1, + const AlgebraicKernelForCircles_2_2::Polynomial_for_circles_2_2 &p2, + OutputIterator res);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::Solve}.} +\ccSeeAlso + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::Solve} + +\end{ccRefFunction} + +\begin{ccRefFunction}{x_critical_points} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2, class OutputIterator > + OutputIterator + x_critical_points + (const typename AlgebraicKernelForCircles_2_2::Polynomial_for_circles_2_2 & c, + OutputIterator res);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::XCriticalPoints}.} + +\end{ccRefFunction} + +\begin{ccRefFunction}{x_critical_point} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2 > + AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 + x_critical_points(const typename AK::Polynomial_for_circles_2_2 & c, + bool i);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::XCriticalPoints}.} + +\end{ccRefFunction} + +\begin{ccRefFunction}{y_critical_points} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2, class OutputIterator > + OutputIterator + y_critical_points + (const typename AlgebraicKernelForCircles_2_2::Polynomial_for_circles_2_2 & c, + OutputIterator res);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::YCriticalPoints}.} + +\end{ccRefFunction} + +\begin{ccRefFunction}{y_critical_point} + +\ccFunction{template < class AlgebraicKernelForCircles_2_2 > + AlgebraicKernelForCircles_2_2::Root_for_circles_2_2 + x_critical_point(const typename AK::Polynomial_for_circles_2_2 & c, + bool i);} + {Calls the operator() of \ccc{AlgebraicKernelForCircles_2_2::YCriticalPoints}.} + +\end{ccRefFunction} + +\begin{ccRefFunction}{make_root_of_2} + +\ccFunction{template < class RT > + Root_of_2 + make_root_of_2(RT a, RT b, RT c, bool s);} + {Returns the smaller (resp. larger) root of equation $aX^2+bX+c=0$ +if \ccc{s} is true (resp. false). +\ccc{RT} is supposed to be a \ccc{RingNumberType}, and \ccc{Root_of_2} is +the type given by \ccc{Root_of_traits_2}.} + +\ccFunction{template < class RT > + Root_of_2 + make_root_of_2(FT a, FT b, FT c, bool s);} + {.} + +\footnote{groumpf. \ccc{Root_of_taits} is templated by RT but we also need (do we?) make-root-of with FT. Relation between RT and FT...?} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::Root_of_2}\\ +\ccRefIdfierPage{CGAL::Root_of_traits_2} + +\end{ccRefFunction} + diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1.tex new file mode 100644 index 00000000000..d7cad02858d --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1.tex @@ -0,0 +1,39 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::Polynomial_1_2} + +\ccDefinition + +The \ccc{AlgebraicKernelForCircles_2_2::Polynomial_1_2} represents bivariate +polynomials of degree 1 whose coefficients are of type \ccc{RT}, a +model of \ccc{RingNumberType}. + +\ccTypes + +\ccCreation +\ccCreationVariable{pol} + +\ccConstructor{Polynomial_1_2();}{Default constructor.} + +%\ccAccessFunctions + +%\ccFunction{const RT & a() const;}{} +%\ccGlue +%\ccFunction{const RT & b() const;}{} +%\ccGlue +%\ccFunction{const RT & c() const;}{} + +%\ccOperations + +%The comparison operator \ccc{==} must be provided. + +%\ccFunction{bool operator ==(const AlgebraicKernelForCircles_2_2::Polynomial_1_2 & p, +% const AlgebraicKernelForCircles_2_2::Polynomial_1_2 & q);}{} + +\ccHasModels + +\ccc{Polynomial_1_2} + +\ccSeeAlso + +\ccRefIdfierPage{AlgebraicKernelForCircles_2_2} + +\end{ccRefConcept} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1_2.tex new file mode 100644 index 00000000000..100a92686d9 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_1_2.tex @@ -0,0 +1,5 @@ +\begin{ccRefClass}{Polynomial_1_2} + +Model of \ccc{AlgebraicKernelForCircles_2_2::Polynomial_1_2} + +\end{ccRefClass} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_2.tex new file mode 100644 index 00000000000..21505beacf6 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_2.tex @@ -0,0 +1,53 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2} + +\ccDefinition + +The \ccc{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2} represents +bivariate polynomials of degree up to~2 capable of storing equations +of circles, whose center has coordinates of type \ccc{FT}, a model of +\ccc{FieldNumberType}, as well as the square of the radius. +\footnote{Of course the name looks bad since it mixes geometry with algebra. +suggestions welcome} + +\ccCreation +\ccCreationVariable{pol} + +\ccConstructor{PolynomialForCircles_2_2();}{Default constructor.} + +%\ccConstructor{PolynomialForCircles_2_2(const FT & a, const FT & b, const FT & rsq);}{Constructs polynomial \ccc{(x-a)^2 + (y-b)^2 - rsq}.} + +%\ccAccessFunctions + +%\ccMethod{const FT & a();}{\ccc{x}-coordinate of the center of the circle.} +%\ccGlue +%\ccMethod{const FT & b();}{\ccc{y}-coordinate of the center of the circle.} +%\ccGlue +%\ccMethod{const FT & r_sq();}{Square radius of the center of the circle.} + +\ccOperations + +The comparison operator \ccc{==} must be provided. + +\ccFunction{bool operator == +(AlgebraicKernelForCircles_2_2::const PolynomialForCircles_2_2 & p, + const AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2 & q);}{} + +\ccHasModels + +\ccc{Polynomial_for_circles_2_2} + +\ccSeeAlso + +\ccRefIdfierPage{AlgebraicKernelForCircles_2_2} + +\end{ccRefConcept} + +\begin{ccRefConcept}{Algebraic_kernel_4_2::Polynomial_2_2} + +\ccDefinition + +The \ccc{Algebraic_kernel_4_2::Polynomial_2_2} represents bivariate +polynomials of degree up to~2 whose coefficients are of type \ccc{RT}, +a model of \ccc{RingNumberType}. + +\end{ccRefConcept} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_for_circles_2_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_for_circles_2_2.tex new file mode 100644 index 00000000000..12bdbfb5a8a --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Polynomial_for_circles_2_2.tex @@ -0,0 +1,5 @@ +\begin{ccRefClass}{Polynomial_for_circles_2_2} + +Model of \ccc{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2} + +\end{ccRefClass} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootCircle_2_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootCircle_2_2.tex new file mode 100644 index 00000000000..384638bd726 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootCircle_2_2.tex @@ -0,0 +1,32 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::RootForCircles_2_2} + +\ccDefinition + +The \ccc{AlgebraicKernelForCircles_2_2::RootForCircles_2_2} concept represents +algebraic numbers that can store the roots of systems of two +\ccc{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2} +equations of degree 2 in two variables \ccc{x} and \ccc{y}. + +%\ccAccessFunctions + +%\ccFunction{const AlgebraicKernelForCircles_2_2::RootOf_2 & x();}{} +%\ccGlue +%\ccFunction{const AlgebraicKernelForCircles_2_2::RootOf_2 & y();}{} + +\ccOperations + +The comparison operator \ccc{==} must be provided. + +\ccFunction{bool operator ==(const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & p, + const AlgebraicKernelForCircles_2_2::RootForCircles_2_2 & q);}{} + +\ccHasModels + +\ccc{Root_for_circles_2_2} + +\ccSeeAlso + +\ccRefIdfierPage{AlgebraicKernelForCircles_2_2} + +\end{ccRefConcept} + diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootOf.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootOf.tex new file mode 100644 index 00000000000..75bc773f0ba --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/RootOf.tex @@ -0,0 +1,59 @@ +\begin{ccRefConcept}{AlgebraicKernelForCircles_2_2::RootOf_2} + +\ccDefinition + +The \ccc{AlgebraicKernelForCircles_2_2::RootOf_2} concept represents algebraic numbers of +degree up to~2 over a \ccc{RingNumberType} denoted as \ccc{RT}. + +\ccc{FT} denotes the \ccc{FieldNumberType} constructed from \ccc{RT}. +\footnote{see \ccc{make_rational}, we need something to get FT from RT in a clean way.} + +\ccCreation + +\footnote{How to get RT...?} + +\ccFunction{RootOf_2 make_root_of_2(RT a, RT b, RT c, bool s);}{Returns +the smaller (resp. larger) root of equation $aX^2+bX+c=0$ if \ccc{s} is true +(resp. false).} +\footnote{numbering of roots from 0 or 1? to be checked} +\ccGlue +\ccFunction{RootOf_2 make_root_of_2(FT a, FT b, FT c, bool s);}{Returns +the smaller (resp. larger) root of equation $aX^2+bX+c=0$ if \ccc{s} is true +(resp. false).} + +\ccOperations + +The comparison operators \ccc{==, !=, <, >, <=, >=} as well as the \ccc{sign} +and \ccc{compare} functions need to be +provided to compare elements of types \ccc{RootOf_2, RT} and \ccc{FT}. + +In addition, the following operations must be provided: + +\def\ccTagRmEigenClassName{\ccFalse} + +\ccFunction{RootOf_2 operator+(const RT &a, const RootOf_2 &r);}{} +\ccGlue +\ccFunction{RootOf_2 operator+(const FT &a, const RootOf_2 &r);}{} +\ccGlue +\ccFunction{RootOf_2 operator+(const RootOf_2 &r, const RT &a);}{} +\ccGlue +\ccFunction{RootOf_2 operator+(const RootOf_2 &r, const FT &a);}{} + +and similarly for operators -, * and /. + +\ccFunction{RootOf_2 square(const RootOf_2 & r);}{} + +\def\ccTagRmEigenClassName{\ccTrue} + +\ccHasModels + +\ccc{double}, \ccc{Root_of_2}, etc \footnote{to be precised} + +\ccSeeAlso + +\ccRefIdfierPage{CGAL::Root_of_2}\\ +\ccRefIdfierPage{CGAL::Root_of_traits_2}\\ +\ccRefIdfierPage{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2}\\ +\ccRefIdfierPage{AlgebraicKernelForCircles_2_2} + +\end{ccRefConcept} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_for_circles_2_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_for_circles_2_2.tex new file mode 100644 index 00000000000..e58344f1787 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_for_circles_2_2.tex @@ -0,0 +1,5 @@ +\begin{ccRefClass}{Root_for_circles_2_2} + +Model for \ccc{AlgebraicKernelForCircles_2_2::RootForCircles_2_2} + +\end{ccRefClass} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_2.tex new file mode 100644 index 00000000000..982c923f9d2 --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_2.tex @@ -0,0 +1,5 @@ +\begin{ccRefClass}{Root_of_2} + +Model for \ccc{AlgebraicKernelForCircles_2_2::RootOf_2} + +\end{ccRefClass} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_traits_2.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_traits_2.tex new file mode 100644 index 00000000000..dd6a2ae664a --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/Root_of_traits_2.tex @@ -0,0 +1,13 @@ +\begin{ccRefClass}{Root_of_traits_2} + +\footnote{name should be changed because it is used ''the other way round'' here, compared with usual use. Find a name with \textit{associative} inside, or/and \textit{extended/extension}...} + +\ccDefinition + +Associates types for algebraic numbers to \ccc{RT}, supposed to be a \ccc{RingNumberType}. + +\ccTypes + +\ccNestedType{Root_of_2;}{Model of \ccc{RootOf_2.}} + +\end{ccRefClass} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/intro.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/intro.tex new file mode 100644 index 00000000000..fcb30c8077c --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/intro.tex @@ -0,0 +1,121 @@ +\ccRefChapter{Algebraic Kernel} + +\textbf{Submission - Monique - with Sylvain's help...} + +\begin{ccAdvanced} +As in Curved-kernel, I use the ``Advanced'' environment in this +document to distinguish between my current submission to the CGAL +editorial board and plans for the future, related to ACS. The +``Advanced'' parts will disappear if/when this is released. +\end{ccAdvanced} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section*{Concepts} + +\footnote{Same big question as for curved-kernel. Should the kernel here +be described as a concept or a class?} + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::Polynomial_1_2}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::PolynomialForCircles_2_2}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::RootOf_2}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::RootForCircles_2_2} + +\begin{ccAdvanced} +\ccRefConceptPage{AlgebraicKernel_4_2}\\ +\ccRefConceptPage{Algebraic_kernel_4_2::Polynomial_2_2}\\ +\ccRefConceptPage{AlgebraicKernel_4_2::RootOf_2_2}\\ +\ccRefConceptPage{AlgebraicKernel_4_2::RootOf_4}\\ + +(The indices may look strange but there is indeed a logic: solve on two +Polynomial-2-2's gives Root-of-4's...) + +General remark about the suffix \ccc{_d_v}: \ccc{_d} stands +for the degree of the polynomials and the algebraic numbers, and +\ccc{_v} stands for the number of variables, which is analogous to the +dimension for CGAL geometric objects. I had already mentioned this in an +earlier version of this document (presented at the CGAL meeting at +INRIA in march 05), and it is consistent with what Menelaos proposed +later (CGAL meeting in Pisa in june 05) for a hierarchy of algebraic kernels. +\end{ccAdvanced} + + \subsubsection*{Functors} + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ConstructPolynomial_1_2}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ConstructPolynomialForCircles_2_2} + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ComputeA}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ComputeB}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ComputeC}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ComputeRsq}\\ +(to be documented) + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ComputeX}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::ComputeY}\\ +(to be documented) + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::Solve} + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::SignAt} + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::XCriticalPoints}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::YCriticalPoints} + +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::CompareX}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::CompareY}\\ +\ccRefConceptPage{AlgebraicKernelForCircles_2_2::CompareXY} + +\begin{ccAdvanced} +\ccRefConceptPage{AlgebraicKernel_4_2::ConstructPolynomial_2_2}\\ +\ccRefConceptPage{AlgebraicKernel_4_2::Solve}\\ +etc +\end{ccAdvanced} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section*{Classes} + +\footnote{how does the linking work when concepts and classes have the same name...? example \ccc{Polynomial_2_2}} + +\ccRefIdfierPage{CGAL::Algebraic_kernel_for_circles_2_2} + +\ccRefIdfierPage{CGAL::Polynomial_1_2}\\ +\ccRefIdfierPage{CGAL::Polynomial_for_circles_2_2} + +\ccRefIdfierPage{CGAL::Root_of_2}\\ +\ccRefIdfierPage{CGAL::Root_for_circles_2_2} + +\ccRefIdfierPage{CGAL::Root_of_traits_2} + +\begin{ccAdvanced} +\ccRefIdfierPage{CGAL::Root_of_4}\\ +\ccRefIdfierPage{CGAL::Polynomial_2_2}\\ +\ccRefIdfierPage{CGAL::Root_of_2_2}\\ +\ccRefIdfierPage{CGAL::Root_of_traits_4} +\end{ccAdvanced} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section*{Functions} + + \subsubsection*{Predicates} +\ccRefIdfierPage{CGAL::sign_at}\\ + +\ccRefIdfierPage{CGAL::compare_x}\\ +\ccRefIdfierPage{CGAL::compare_y}\\ +\ccRefIdfierPage{CGAL::compare_xy} + + \subsubsection*{Constructions} + +\ccRefIdfierPage{CGAL::construct_polynomial_1_2}\\ +\ccRefIdfierPage{CGAL::construct_polynomial_for_circles_2_2}\\ + +\ccRefIdfierPage{CGAL::make_root_of_2} + +\ccRefIdfierPage{CGAL::solve} + +\ccRefIdfierPage{CGAL::x_critical_points}\\ +\ccRefIdfierPage{CGAL::y_critical_points} + +\begin{ccAdvanced} +\ccRefIdfierPage{CGAL::make_root_of_4}\\ +etc +\end{ccAdvanced} diff --git a/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/main.tex b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/main.tex new file mode 100644 index 00000000000..8c6e7c44e1d --- /dev/null +++ b/Algebraic_kernel_for_circles/doc_tex/Algebraic_kernel_for_circles_ref/main.tex @@ -0,0 +1,23 @@ +\input{Algebraic_kernel_for_circles_ref/intro} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\input{Algebraic_kernel_for_circles_ref/AlgebraicKernelForCircles_2_2} %concept +\input{Algebraic_kernel_for_circles_ref/Algebraic_kernel_for_circles_2_2} +\input{Algebraic_kernel_for_circles_ref/AlgebraicKernel_4_2} %concept + +\input{Algebraic_kernel_for_circles_ref/RootOf} %concept +\input{Algebraic_kernel_for_circles_ref/Root_of_2} +\input{Algebraic_kernel_for_circles_ref/RootCircle_2_2} %concept +\input{Algebraic_kernel_for_circles_ref/Root_for_circles_2_2} +\input{Algebraic_kernel_for_circles_ref/Root_of_traits_2} +\input{Algebraic_kernel_for_circles_ref/Polynomial_1} %concept +\input{Algebraic_kernel_for_circles_ref/Polynomial_1_2} +\input{Algebraic_kernel_for_circles_ref/Polynomial_2} %concept +\input{Algebraic_kernel_for_circles_ref/Polynomial_for_circles_2_2} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\input{Algebraic_kernel_for_circles_ref/AlgFunctorsPredicates} % concepts +\input{Algebraic_kernel_for_circles_ref/AlgFunctorsConstruct} % concepts + +\input{Algebraic_kernel_for_circles_ref/Global_functions.tex}