// Copyright (c) 2006-2013 INRIA Nancy-Grand Est (France). All rights reserved. // // This file is part of CGAL (www.cgal.org) // // $URL: https://github.com/CGAL/cgal/blob/v5.1/Algebraic_kernel_d/include/CGAL/RS/ak_z_1.h $ // $Id: ak_z_1.h 52164b1 2019-10-19T15:34:59+02:00 Sébastien Loriot // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // Author: Luis Peñaranda #ifndef CGAL_RS_AK_Z_1_H #define CGAL_RS_AK_Z_1_H #include // included only to define size_t #include #include "algebraic_z_1.h" #include "comparator_1.h" #include "signat_1.h" #include "functors_z_1.h" // This file defines the "Z-algebraic kernel". This kind of kernel performs // all the internal operations using an integer polynomial type (the name // "Z" comes from there). For this, a converter functor (passed as a // template parameter) is used, which converts the input polynomial to the // integer representation. namespace CGAL{ namespace RS_AK1{ template , class ZPtraits_=CGAL::Polynomial_traits_d > class Algebraic_kernel_z_1{ public: typedef ExtPolynomial_ Polynomial_1; typedef IntPolynomial_ ZPolynomial_1; typedef PolConverter_ PolConverter; typedef typename Polynomial_1::NT Coefficient; typedef Bound_ Bound; private: typedef Isolator_ Isolator; typedef Refiner_ Refiner; typedef Ptraits_ Ptraits; typedef ZPtraits_ ZPtraits; typedef CGAL::RS_AK1::Signat_1 Signat; typedef CGAL::RS_AK1::Simple_comparator_1 Comparator; public: typedef CGAL::RS_AK1::Algebraic_z_1 Algebraic_real_1; typedef size_t size_type; typedef unsigned Multiplicity_type; // default constructor and destructor public: Algebraic_kernel_z_1(){}; ~Algebraic_kernel_z_1(){}; // functors from the CGAL concept public: typedef CGAL::RS_AK1::Construct_algebraic_real_z_1 Construct_algebraic_real_1; typedef CGAL::RS_AK1::Compute_polynomial_z_1 Compute_polynomial_1; typedef CGAL::RS_AK1::Isolate_z_1 Isolate_1; typedef typename Ptraits::Is_square_free Is_square_free_1; typedef typename Ptraits::Make_square_free Make_square_free_1; typedef typename Ptraits::Square_free_factorize Square_free_factorize_1; typedef CGAL::RS_AK1::Is_coprime_z_1 Is_coprime_1; typedef CGAL::RS_AK1::Make_coprime_z_1 Make_coprime_1; typedef CGAL::RS_AK1::Solve_z_1 Solve_1; typedef CGAL::RS_AK1::Number_of_solutions_z_1 Number_of_solutions_1; typedef CGAL::RS_AK1::Sign_at_z_1 Sign_at_1; typedef CGAL::RS_AK1::Is_zero_at_z_1 Is_zero_at_1; typedef CGAL::RS_AK1::Compare_z_1 Compare_1; typedef CGAL::RS_AK1::Bound_between_z_1 Bound_between_1; typedef CGAL::RS_AK1::Approximate_absolute_z_1 Approximate_absolute_1; typedef CGAL::RS_AK1::Approximate_relative_z_1 Approximate_relative_1; #define CREATE_FUNCTION_OBJECT(T,N) \ T N##_object()const{return T();} CREATE_FUNCTION_OBJECT(Construct_algebraic_real_1, construct_algebraic_real_1) CREATE_FUNCTION_OBJECT(Compute_polynomial_1, compute_polynomial_1) CREATE_FUNCTION_OBJECT(Isolate_1, isolate_1) CREATE_FUNCTION_OBJECT(Is_square_free_1, is_square_free_1) CREATE_FUNCTION_OBJECT(Make_square_free_1, make_square_free_1) CREATE_FUNCTION_OBJECT(Square_free_factorize_1, square_free_factorize_1) CREATE_FUNCTION_OBJECT(Is_coprime_1, is_coprime_1) CREATE_FUNCTION_OBJECT(Make_coprime_1, make_coprime_1) CREATE_FUNCTION_OBJECT(Solve_1, solve_1) CREATE_FUNCTION_OBJECT(Number_of_solutions_1, number_of_solutions_1) CREATE_FUNCTION_OBJECT(Sign_at_1, sign_at_1) CREATE_FUNCTION_OBJECT(Is_zero_at_1, is_zero_at_1) CREATE_FUNCTION_OBJECT(Compare_1, compare_1) CREATE_FUNCTION_OBJECT(Bound_between_1, bound_between_1) CREATE_FUNCTION_OBJECT(Approximate_absolute_1, approximate_absolute_1) CREATE_FUNCTION_OBJECT(Approximate_relative_1, approximate_relative_1) #undef CREATE_FUNCTION_OBJECT }; // class Algebraic_kernel_z_1 } // namespace RS_AK1 } // namespace CGAL #endif // CGAL_RS_AK_Z_1_H