Files
cgal/Arithmetic_kernel/include/CGAL/GMP_arithmetic_kernel.h
T
Sébastien Loriot c8b96139c6 *GMP_arithmetic_kernel now always define Integer and Rational even when Gmpfi
is not available.

*Add default empty struct for Get_arithmetic_kernel. That way we can test if
a specialization is avaible. I used it for the default case of Root_of_traits.
When a number type not known by CGAL is used to instanciate Root_of_traits,
the field type used to instanciate Sqrt_extension is made using Quotient.

*Patch of Lazy_exact_nt constructor from another Lazy_exact_nt type.
In revision 61559, that constructor was retricted to the case the exact type
is implicitely constructed from the other exact type. Now the old behavior is
back but only if it is explicitely called (patch from Marc Glisse).

*Update To_double specialization of Sqrt_extension to use the same formula
than To_interval so that the double value is contained in the interval.

*update root_of_2 test-suite to use Sqrt_extension and that they behave
similarly
2011-05-04 07:32:31 +00:00

88 lines
2.3 KiB
C++

// Copyright (c) 2008 Max-Planck-Institute Saarbruecken (Germany).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
// Author(s) : Michael Hemmer <mhemmer@uni-mainz.de>
//
// ============================================================================
//
// \brief provide class Arithmetic_kernel, a collection of number types.
//
/*! \file CGAL/Arithmetic_kernel.h
* \brief Declarations pertaining to CGAL::Arithmetic_kernel
*/
#ifndef CGAL_GMP_ARITHMETIC_KERNEL_H
#define CGAL_GMP_ARITHMETIC_KERNEL_H
#include <CGAL/basic.h>
#include <CGAL/Arithmetic_kernel/Arithmetic_kernel_base.h>
#include <CGAL/Get_arithmetic_kernel.h>
#ifdef CGAL_USE_GMP
#ifdef CGAL_USE_MPFI
#define CGAL_HAS_GMP_ARITHMETIC_KERNEL
#endif //CGAL_USE_MPFI
#endif //CGAL_USE_GMP
#include <CGAL/Gmpz.h>
#include <CGAL/Gmpq.h>
#include <CGAL/Gmpfr.h>
#include <CGAL/Gmpfi.h>
namespace CGAL {
/*! \ingroup CGAL_Arithmetic_kernel
* \brief The GMP set of exact number types
*/
class GMP_arithmetic_kernel : public internal::Arithmetic_kernel_base {
public:
typedef CGAL::Gmpz Integer;
typedef CGAL::Gmpq Rational;
#ifdef CGAL_USE_MPFI
typedef CGAL::Gmpfr Bigfloat;
typedef CGAL::Gmpfi Bigfloat_interval;
#endif //CGAL_USE_MPFI
};
template <>
struct Get_arithmetic_kernel<Gmpz> {
typedef GMP_arithmetic_kernel Arithmetic_kernel;
};
template <>
struct Get_arithmetic_kernel<Gmpq>{
typedef GMP_arithmetic_kernel Arithmetic_kernel;
};
#ifdef CGAL_USE_MPFI
template <>
struct Get_arithmetic_kernel<Gmpfr>{
typedef GMP_arithmetic_kernel Arithmetic_kernel;
};
template <>
struct Get_arithmetic_kernel<Gmpfi>{
typedef GMP_arithmetic_kernel Arithmetic_kernel;
};
#endif //CGAL_USE_MPFI
} //namespace CGAL
#endif // CGAL_ARITHMETIC_KERNEL_H
// EOF