Moved from Filter/.

This commit is contained in:
Sylvain Pion 1998-12-08 12:53:19 +00:00
parent 66f5e0711e
commit 4f3b42af42
4 changed files with 2217 additions and 0 deletions

View File

@ -0,0 +1,23 @@
#
# This is the Makefile responsible for constructing the filtered predicates
# files from the generic ones in $CGAL/include/CGAL.
#
# Maybe you need GNU Make, I don't know.
#
# Sylvain Pion, 1998.
# Tell where the script is.
SCRIPT = ../../../examples/Interval_arithmetic/filtered_predicate_converter
# Tell which files must be parsed.
OBJECTS = predicates_on_ftC2.h predicates_on_ftC3.h predicates_on_rtH2.h
#### Don't touch below.
% :: $(CGAL)/include/CGAL/% $(SCRIPT)
$(SCRIPT) < $< > $@
all: $(OBJECTS)
clean:
rm -f $(OBJECTS)

View File

@ -0,0 +1,961 @@
// ======================================================================
//
// Copyright (c) 1998 The CGAL Consortium
//
// This software and related documentation is part of an INTERNAL release
// of the Computational Geometry Algorithms Library (CGAL). It is not
// intended for general use.
//
// ----------------------------------------------------------------------
//
// release :
// release_date :
//
// file : include/CGAL/Filter/predicates_on_ftC2.h
// package : Interval_arithmetic
// source : include/CGAL/predicates_on_ftC2.h
// revision : $Revision$
// revision_date :
// author(s) : Sylvain.Pion@sophia.inria.fr
//
// coordinator : INRIA Sophia-Antipolis (Herve.Bronnimann@sophia.inria.fr)
//
// ======================================================================
#ifndef CGAL_FILTER_PREDICATES_ON_FTC2_H
#define CGAL_FILTER_PREDICATES_ON_FTC2_H
// This file is automatically generated with the script for filtering
// predicates, using Interval arithmetic.
#include <CGAL/Interval_arithmetic.h>
#ifndef CGAL_DETERMINANT_H
#include <CGAL/determinant.h>
#endif // CGAL_DETERMINANT_H
#ifndef CGAL_BASIC_CONSTRUCTIONS_FTC2_H
#include <CGAL/basic_constructions_ftC2.h>
#endif
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_compare_xC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &l1a,
const CGAL_Filtering<CT,ET> &l1b,
const CGAL_Filtering<CT,ET> &l1c,
const CGAL_Filtering<CT,ET> &l2a,
const CGAL_Filtering<CT,ET> &l2b,
const CGAL_Filtering<CT,ET> &l2c)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_xC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(l1a.value),
CGAL_to_Interval_nt_advanced(l1b.value),
CGAL_to_Interval_nt_advanced(l1c.value),
CGAL_to_Interval_nt_advanced(l2a.value),
CGAL_to_Interval_nt_advanced(l2b.value),
CGAL_to_Interval_nt_advanced(l2c.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_xC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(l1a.value),
CGAL_to_exact_type<ET>(l1b.value),
CGAL_to_exact_type<ET>(l1c.value),
CGAL_to_exact_type<ET>(l2a.value),
CGAL_to_exact_type<ET>(l2b.value),
CGAL_to_exact_type<ET>(l2c.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_compare_xC2(const CGAL_Filtering<CT,ET> &l1a,
const CGAL_Filtering<CT,ET> &l1b,
const CGAL_Filtering<CT,ET> &l1c,
const CGAL_Filtering<CT,ET> &l2a,
const CGAL_Filtering<CT,ET> &l2b,
const CGAL_Filtering<CT,ET> &l2c,
const CGAL_Filtering<CT,ET> &h1a,
const CGAL_Filtering<CT,ET> &h1b,
const CGAL_Filtering<CT,ET> &h1c,
const CGAL_Filtering<CT,ET> &h2a,
const CGAL_Filtering<CT,ET> &h2b,
const CGAL_Filtering<CT,ET> &h2c)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_xC2(
CGAL_to_Interval_nt_advanced(l1a.value),
CGAL_to_Interval_nt_advanced(l1b.value),
CGAL_to_Interval_nt_advanced(l1c.value),
CGAL_to_Interval_nt_advanced(l2a.value),
CGAL_to_Interval_nt_advanced(l2b.value),
CGAL_to_Interval_nt_advanced(l2c.value),
CGAL_to_Interval_nt_advanced(h1a.value),
CGAL_to_Interval_nt_advanced(h1b.value),
CGAL_to_Interval_nt_advanced(h1c.value),
CGAL_to_Interval_nt_advanced(h2a.value),
CGAL_to_Interval_nt_advanced(h2b.value),
CGAL_to_Interval_nt_advanced(h2c.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_xC2(
CGAL_to_exact_type<ET>(l1a.value),
CGAL_to_exact_type<ET>(l1b.value),
CGAL_to_exact_type<ET>(l1c.value),
CGAL_to_exact_type<ET>(l2a.value),
CGAL_to_exact_type<ET>(l2b.value),
CGAL_to_exact_type<ET>(l2c.value),
CGAL_to_exact_type<ET>(h1a.value),
CGAL_to_exact_type<ET>(h1b.value),
CGAL_to_exact_type<ET>(h1c.value),
CGAL_to_exact_type<ET>(h2a.value),
CGAL_to_exact_type<ET>(h2b.value),
CGAL_to_exact_type<ET>(h2c.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &la,
const CGAL_Filtering<CT,ET> &lb,
const CGAL_Filtering<CT,ET> &lc)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_y_at_xC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(la.value),
CGAL_to_Interval_nt_advanced(lb.value),
CGAL_to_Interval_nt_advanced(lc.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_y_at_xC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(la.value),
CGAL_to_exact_type<ET>(lb.value),
CGAL_to_exact_type<ET>(lc.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &l1a,
const CGAL_Filtering<CT,ET> &l1b,
const CGAL_Filtering<CT,ET> &l1c,
const CGAL_Filtering<CT,ET> &l2a,
const CGAL_Filtering<CT,ET> &l2b,
const CGAL_Filtering<CT,ET> &l2c)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_y_at_xC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(l1a.value),
CGAL_to_Interval_nt_advanced(l1b.value),
CGAL_to_Interval_nt_advanced(l1c.value),
CGAL_to_Interval_nt_advanced(l2a.value),
CGAL_to_Interval_nt_advanced(l2b.value),
CGAL_to_Interval_nt_advanced(l2c.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_y_at_xC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(l1a.value),
CGAL_to_exact_type<ET>(l1b.value),
CGAL_to_exact_type<ET>(l1c.value),
CGAL_to_exact_type<ET>(l2a.value),
CGAL_to_exact_type<ET>(l2b.value),
CGAL_to_exact_type<ET>(l2c.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &l1a,
const CGAL_Filtering<CT,ET> &l1b,
const CGAL_Filtering<CT,ET> &l1c,
const CGAL_Filtering<CT,ET> &l2a,
const CGAL_Filtering<CT,ET> &l2b,
const CGAL_Filtering<CT,ET> &l2c,
const CGAL_Filtering<CT,ET> &ha,
const CGAL_Filtering<CT,ET> &hb,
const CGAL_Filtering<CT,ET> &hc)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_y_at_xC2(
CGAL_to_Interval_nt_advanced(l1a.value),
CGAL_to_Interval_nt_advanced(l1b.value),
CGAL_to_Interval_nt_advanced(l1c.value),
CGAL_to_Interval_nt_advanced(l2a.value),
CGAL_to_Interval_nt_advanced(l2b.value),
CGAL_to_Interval_nt_advanced(l2c.value),
CGAL_to_Interval_nt_advanced(ha.value),
CGAL_to_Interval_nt_advanced(hb.value),
CGAL_to_Interval_nt_advanced(hc.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_y_at_xC2(
CGAL_to_exact_type<ET>(l1a.value),
CGAL_to_exact_type<ET>(l1b.value),
CGAL_to_exact_type<ET>(l1c.value),
CGAL_to_exact_type<ET>(l2a.value),
CGAL_to_exact_type<ET>(l2b.value),
CGAL_to_exact_type<ET>(l2c.value),
CGAL_to_exact_type<ET>(ha.value),
CGAL_to_exact_type<ET>(hb.value),
CGAL_to_exact_type<ET>(hc.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &l1a,
const CGAL_Filtering<CT,ET> &l1b,
const CGAL_Filtering<CT,ET> &l1c,
const CGAL_Filtering<CT,ET> &l2a,
const CGAL_Filtering<CT,ET> &l2b,
const CGAL_Filtering<CT,ET> &l2c,
const CGAL_Filtering<CT,ET> &h1a,
const CGAL_Filtering<CT,ET> &h1b,
const CGAL_Filtering<CT,ET> &h1c,
const CGAL_Filtering<CT,ET> &h2a,
const CGAL_Filtering<CT,ET> &h2b,
const CGAL_Filtering<CT,ET> &h2c)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_y_at_xC2(
CGAL_to_Interval_nt_advanced(l1a.value),
CGAL_to_Interval_nt_advanced(l1b.value),
CGAL_to_Interval_nt_advanced(l1c.value),
CGAL_to_Interval_nt_advanced(l2a.value),
CGAL_to_Interval_nt_advanced(l2b.value),
CGAL_to_Interval_nt_advanced(l2c.value),
CGAL_to_Interval_nt_advanced(h1a.value),
CGAL_to_Interval_nt_advanced(h1b.value),
CGAL_to_Interval_nt_advanced(h1c.value),
CGAL_to_Interval_nt_advanced(h2a.value),
CGAL_to_Interval_nt_advanced(h2b.value),
CGAL_to_Interval_nt_advanced(h2c.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_y_at_xC2(
CGAL_to_exact_type<ET>(l1a.value),
CGAL_to_exact_type<ET>(l1b.value),
CGAL_to_exact_type<ET>(l1c.value),
CGAL_to_exact_type<ET>(l2a.value),
CGAL_to_exact_type<ET>(l2b.value),
CGAL_to_exact_type<ET>(l2c.value),
CGAL_to_exact_type<ET>(h1a.value),
CGAL_to_exact_type<ET>(h1b.value),
CGAL_to_exact_type<ET>(h1c.value),
CGAL_to_exact_type<ET>(h2a.value),
CGAL_to_exact_type<ET>(h2b.value),
CGAL_to_exact_type<ET>(h2c.value));
}
return result;
}
template < class CT, class ET >
// inline
CGAL_Comparison_result
CGAL_compare_deltax_deltayC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &sy)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_deltax_deltayC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(sy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_deltax_deltayC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(sy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
CGAL_Comparison_result
// inline
CGAL_compare_lexicographically_xyC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_lexicographically_xyC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_lexicographically_xyC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
CGAL_Orientation
CGAL_orientationC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry)
{ // This is the default filter (specialization).
CGAL_Orientation result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_orientationC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_orientationC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_collinear_are_ordered_along_lineC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_collinear_are_ordered_along_lineC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_collinear_are_ordered_along_lineC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_collinear_are_strictly_ordered_along_lineC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_collinear_are_strictly_ordered_along_lineC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_collinear_are_strictly_ordered_along_lineC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Oriented_side
CGAL_side_of_oriented_circleC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &tx,
const CGAL_Filtering<CT,ET> &ty)
{ // This is the default filter (specialization).
CGAL_Oriented_side result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_side_of_oriented_circleC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(tx.value),
CGAL_to_Interval_nt_advanced(ty.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_side_of_oriented_circleC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(tx.value),
CGAL_to_exact_type<ET>(ty.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Bounded_side
CGAL_side_of_bounded_circleC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &tx,
const CGAL_Filtering<CT,ET> &ty)
{ // This is the default filter (specialization).
CGAL_Bounded_side result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_side_of_bounded_circleC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(tx.value),
CGAL_to_Interval_nt_advanced(ty.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_side_of_bounded_circleC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(tx.value),
CGAL_to_exact_type<ET>(ty.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_cmp_dist_to_pointC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_cmp_dist_to_pointC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_cmp_dist_to_pointC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_larger_dist_to_pointC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_larger_dist_to_pointC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_larger_dist_to_pointC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_smaller_dist_to_pointC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_smaller_dist_to_pointC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_smaller_dist_to_pointC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_cmp_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &la,
const CGAL_Filtering<CT,ET> &lb,
const CGAL_Filtering<CT,ET> &lc,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_cmp_signed_dist_to_lineC2(
CGAL_to_Interval_nt_advanced(la.value),
CGAL_to_Interval_nt_advanced(lb.value),
CGAL_to_Interval_nt_advanced(lc.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_cmp_signed_dist_to_lineC2(
CGAL_to_exact_type<ET>(la.value),
CGAL_to_exact_type<ET>(lb.value),
CGAL_to_exact_type<ET>(lc.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_larger_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &la,
const CGAL_Filtering<CT,ET> &lb,
const CGAL_Filtering<CT,ET> &lc,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_larger_signed_dist_to_lineC2(
CGAL_to_Interval_nt_advanced(la.value),
CGAL_to_Interval_nt_advanced(lb.value),
CGAL_to_Interval_nt_advanced(lc.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_larger_signed_dist_to_lineC2(
CGAL_to_exact_type<ET>(la.value),
CGAL_to_exact_type<ET>(lb.value),
CGAL_to_exact_type<ET>(lc.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_smaller_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &la,
const CGAL_Filtering<CT,ET> &lb,
const CGAL_Filtering<CT,ET> &lc,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_smaller_signed_dist_to_lineC2(
CGAL_to_Interval_nt_advanced(la.value),
CGAL_to_Interval_nt_advanced(lb.value),
CGAL_to_Interval_nt_advanced(lc.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_smaller_signed_dist_to_lineC2(
CGAL_to_exact_type<ET>(la.value),
CGAL_to_exact_type<ET>(lb.value),
CGAL_to_exact_type<ET>(lc.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_cmp_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &sx,
const CGAL_Filtering<CT,ET> &sy)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_cmp_signed_dist_to_lineC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(sx.value),
CGAL_to_Interval_nt_advanced(sy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_cmp_signed_dist_to_lineC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(sx.value),
CGAL_to_exact_type<ET>(sy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_larger_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &sx,
const CGAL_Filtering<CT,ET> &sy)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_larger_signed_dist_to_lineC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(sx.value),
CGAL_to_Interval_nt_advanced(sy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_larger_signed_dist_to_lineC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(sx.value),
CGAL_to_exact_type<ET>(sy.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_smaller_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &sx,
const CGAL_Filtering<CT,ET> &sy)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_smaller_signed_dist_to_lineC2(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(sx.value),
CGAL_to_Interval_nt_advanced(sy.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_smaller_signed_dist_to_lineC2(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(sx.value),
CGAL_to_exact_type<ET>(sy.value));
}
return result;
}
#ifdef CGAL_FILTER_H
#include <CGAL/Filter/predicates_on_ftC2.h>
#endif
#endif // CGAL_FILTER_PREDICATES_ON_FTC2_H

View File

@ -0,0 +1,900 @@
// ======================================================================
//
// Copyright (c) 1997 The CGAL Consortium
//
// This software and related documentation is part of an INTERNAL release
// of the Computational Geometry Algorithms Library (CGAL). It is not
// intended for general use.
//
// ----------------------------------------------------------------------
//
// release :
// release_date :
//
// file : include/CGAL/Filter/predicates_on_ftC3.h
// package : Interval_arithmetic
// source : include/CGAL/predicates_on_ftC3.h
// revision : $Revision$
// revision_date :
// author(s) : Sylvain.Pion@sophia.inria.fr
//
// coordinator : INRIA Sophia-Antipolis (Herve.Bronnimann@sophia.inria.fr)
//
// ======================================================================
#ifndef CGAL_FILTER_PREDICATES_ON_FTC3_H
#define CGAL_FILTER_PREDICATES_ON_FTC3_H
// This file is automatically generated with the script for filtering
// predicates, using Interval arithmetic.
#include <CGAL/Interval_arithmetic.h>
#ifndef CGAL_DETERMINANT_H
#include <CGAL/determinant.h>
#endif // CGAL_DETERMINANT_H
#ifndef CGAL_BASIC_CONSTRUCTIONS_FTC3_H
#include <CGAL/basic_constructions_ftC3.h>
#endif // CGAL_BASIC_CONSTRUCTIONS_FTC3_H
template < class CT, class ET >
CGAL_Comparison_result
CGAL_compare_lexicographically_xyzC3(const CGAL_Filtering<CT,ET> &x1,
const CGAL_Filtering<CT,ET> &y1,
const CGAL_Filtering<CT,ET> &z1,
const CGAL_Filtering<CT,ET> &x2,
const CGAL_Filtering<CT,ET> &y2,
const CGAL_Filtering<CT,ET> &z2)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_compare_lexicographically_xyzC3(
CGAL_to_Interval_nt_advanced(x1.value),
CGAL_to_Interval_nt_advanced(y1.value),
CGAL_to_Interval_nt_advanced(z1.value),
CGAL_to_Interval_nt_advanced(x2.value),
CGAL_to_Interval_nt_advanced(y2.value),
CGAL_to_Interval_nt_advanced(z2.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_compare_lexicographically_xyzC3(
CGAL_to_exact_type<ET>(x1.value),
CGAL_to_exact_type<ET>(y1.value),
CGAL_to_exact_type<ET>(z1.value),
CGAL_to_exact_type<ET>(x2.value),
CGAL_to_exact_type<ET>(y2.value),
CGAL_to_exact_type<ET>(z2.value));
}
return result;
}
template < class CT, class ET >
bool
CGAL_collinearC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_collinearC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_collinearC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value));
}
return result;
}
template < class CT, class ET >
CGAL_Orientation
CGAL_orientationC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz,
const CGAL_Filtering<CT,ET> &sx,
const CGAL_Filtering<CT,ET> &sy,
const CGAL_Filtering<CT,ET> &sz)
{ // This is the default filter (specialization).
CGAL_Orientation result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_orientationC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value),
CGAL_to_Interval_nt_advanced(sx.value),
CGAL_to_Interval_nt_advanced(sy.value),
CGAL_to_Interval_nt_advanced(sz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_orientationC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value),
CGAL_to_exact_type<ET>(sx.value),
CGAL_to_exact_type<ET>(sy.value),
CGAL_to_exact_type<ET>(sz.value));
}
return result;
}
template < class CT, class ET >
bool
CGAL_collinear_are_ordered_along_lineC3(
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_collinear_are_ordered_along_lineC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_collinear_are_ordered_along_lineC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value));
}
return result;
}
template < class CT, class ET >
bool
CGAL_collinear_are_strictly_ordered_along_lineC3(
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_collinear_are_strictly_ordered_along_lineC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_collinear_are_strictly_ordered_along_lineC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value));
}
return result;
}
template < class CT, class ET >
CGAL_Oriented_side
CGAL_side_of_oriented_sphereC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz,
const CGAL_Filtering<CT,ET> &sx,
const CGAL_Filtering<CT,ET> &sy,
const CGAL_Filtering<CT,ET> &sz,
const CGAL_Filtering<CT,ET> &tx,
const CGAL_Filtering<CT,ET> &ty,
const CGAL_Filtering<CT,ET> &tz)
{ // This is the default filter (specialization).
CGAL_Oriented_side result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_side_of_oriented_sphereC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value),
CGAL_to_Interval_nt_advanced(sx.value),
CGAL_to_Interval_nt_advanced(sy.value),
CGAL_to_Interval_nt_advanced(sz.value),
CGAL_to_Interval_nt_advanced(tx.value),
CGAL_to_Interval_nt_advanced(ty.value),
CGAL_to_Interval_nt_advanced(tz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_side_of_oriented_sphereC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value),
CGAL_to_exact_type<ET>(sx.value),
CGAL_to_exact_type<ET>(sy.value),
CGAL_to_exact_type<ET>(sz.value),
CGAL_to_exact_type<ET>(tx.value),
CGAL_to_exact_type<ET>(ty.value),
CGAL_to_exact_type<ET>(tz.value));
}
return result;
}
template < class CT, class ET >
CGAL_Bounded_side
CGAL_side_of_bounded_sphereC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz,
const CGAL_Filtering<CT,ET> &sx,
const CGAL_Filtering<CT,ET> &sy,
const CGAL_Filtering<CT,ET> &sz,
const CGAL_Filtering<CT,ET> &tx,
const CGAL_Filtering<CT,ET> &ty,
const CGAL_Filtering<CT,ET> &tz)
{ // This is the default filter (specialization).
CGAL_Bounded_side result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_side_of_bounded_sphereC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value),
CGAL_to_Interval_nt_advanced(sx.value),
CGAL_to_Interval_nt_advanced(sy.value),
CGAL_to_Interval_nt_advanced(sz.value),
CGAL_to_Interval_nt_advanced(tx.value),
CGAL_to_Interval_nt_advanced(ty.value),
CGAL_to_Interval_nt_advanced(tz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_side_of_bounded_sphereC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value),
CGAL_to_exact_type<ET>(sx.value),
CGAL_to_exact_type<ET>(sy.value),
CGAL_to_exact_type<ET>(sz.value),
CGAL_to_exact_type<ET>(tx.value),
CGAL_to_exact_type<ET>(ty.value),
CGAL_to_exact_type<ET>(tz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_cmp_dist_to_pointC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_cmp_dist_to_pointC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_cmp_dist_to_pointC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_larger_dist_to_pointC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_larger_dist_to_pointC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_larger_dist_to_pointC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_smaller_dist_to_pointC3(const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz,
const CGAL_Filtering<CT,ET> &rx,
const CGAL_Filtering<CT,ET> &ry,
const CGAL_Filtering<CT,ET> &rz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_smaller_dist_to_pointC3(
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value),
CGAL_to_Interval_nt_advanced(rx.value),
CGAL_to_Interval_nt_advanced(ry.value),
CGAL_to_Interval_nt_advanced(rz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_smaller_dist_to_pointC3(
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value),
CGAL_to_exact_type<ET>(rx.value),
CGAL_to_exact_type<ET>(ry.value),
CGAL_to_exact_type<ET>(rz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_cmp_signed_dist_to_planeC3(
const CGAL_Filtering<CT,ET> &pa,
const CGAL_Filtering<CT,ET> &pb,
const CGAL_Filtering<CT,ET> &pc,
const CGAL_Filtering<CT,ET> &pd,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_cmp_signed_dist_to_planeC3(
CGAL_to_Interval_nt_advanced(pa.value),
CGAL_to_Interval_nt_advanced(pb.value),
CGAL_to_Interval_nt_advanced(pc.value),
CGAL_to_Interval_nt_advanced(pd.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_cmp_signed_dist_to_planeC3(
CGAL_to_exact_type<ET>(pa.value),
CGAL_to_exact_type<ET>(pb.value),
CGAL_to_exact_type<ET>(pc.value),
CGAL_to_exact_type<ET>(pd.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_larger_signed_dist_to_planeC3(
const CGAL_Filtering<CT,ET> &pa,
const CGAL_Filtering<CT,ET> &pb,
const CGAL_Filtering<CT,ET> &pc,
const CGAL_Filtering<CT,ET> &pd,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_larger_signed_dist_to_planeC3(
CGAL_to_Interval_nt_advanced(pa.value),
CGAL_to_Interval_nt_advanced(pb.value),
CGAL_to_Interval_nt_advanced(pc.value),
CGAL_to_Interval_nt_advanced(pd.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_larger_signed_dist_to_planeC3(
CGAL_to_exact_type<ET>(pa.value),
CGAL_to_exact_type<ET>(pb.value),
CGAL_to_exact_type<ET>(pc.value),
CGAL_to_exact_type<ET>(pd.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_smaller_signed_dist_to_planeC3(
const CGAL_Filtering<CT,ET> &pa,
const CGAL_Filtering<CT,ET> &pb,
const CGAL_Filtering<CT,ET> &pc,
const CGAL_Filtering<CT,ET> &pd,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_smaller_signed_dist_to_planeC3(
CGAL_to_Interval_nt_advanced(pa.value),
CGAL_to_Interval_nt_advanced(pb.value),
CGAL_to_Interval_nt_advanced(pc.value),
CGAL_to_Interval_nt_advanced(pd.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_smaller_signed_dist_to_planeC3(
CGAL_to_exact_type<ET>(pa.value),
CGAL_to_exact_type<ET>(pb.value),
CGAL_to_exact_type<ET>(pc.value),
CGAL_to_exact_type<ET>(pd.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
CGAL_Comparison_result
CGAL_cmp_signed_dist_to_planeC3(
const CGAL_Filtering<CT,ET> &ppx,
const CGAL_Filtering<CT,ET> &ppy,
const CGAL_Filtering<CT,ET> &ppz,
const CGAL_Filtering<CT,ET> &pqx,
const CGAL_Filtering<CT,ET> &pqy,
const CGAL_Filtering<CT,ET> &pqz,
const CGAL_Filtering<CT,ET> &prx,
const CGAL_Filtering<CT,ET> &pry,
const CGAL_Filtering<CT,ET> &prz,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz)
{ // This is the default filter (specialization).
CGAL_Comparison_result result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_cmp_signed_dist_to_planeC3(
CGAL_to_Interval_nt_advanced(ppx.value),
CGAL_to_Interval_nt_advanced(ppy.value),
CGAL_to_Interval_nt_advanced(ppz.value),
CGAL_to_Interval_nt_advanced(pqx.value),
CGAL_to_Interval_nt_advanced(pqy.value),
CGAL_to_Interval_nt_advanced(pqz.value),
CGAL_to_Interval_nt_advanced(prx.value),
CGAL_to_Interval_nt_advanced(pry.value),
CGAL_to_Interval_nt_advanced(prz.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_cmp_signed_dist_to_planeC3(
CGAL_to_exact_type<ET>(ppx.value),
CGAL_to_exact_type<ET>(ppy.value),
CGAL_to_exact_type<ET>(ppz.value),
CGAL_to_exact_type<ET>(pqx.value),
CGAL_to_exact_type<ET>(pqy.value),
CGAL_to_exact_type<ET>(pqz.value),
CGAL_to_exact_type<ET>(prx.value),
CGAL_to_exact_type<ET>(pry.value),
CGAL_to_exact_type<ET>(prz.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_larger_signed_dist_to_planeC3(
const CGAL_Filtering<CT,ET> &ppx,
const CGAL_Filtering<CT,ET> &ppy,
const CGAL_Filtering<CT,ET> &ppz,
const CGAL_Filtering<CT,ET> &pqx,
const CGAL_Filtering<CT,ET> &pqy,
const CGAL_Filtering<CT,ET> &pqz,
const CGAL_Filtering<CT,ET> &prx,
const CGAL_Filtering<CT,ET> &pry,
const CGAL_Filtering<CT,ET> &prz,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_larger_signed_dist_to_planeC3(
CGAL_to_Interval_nt_advanced(ppx.value),
CGAL_to_Interval_nt_advanced(ppy.value),
CGAL_to_Interval_nt_advanced(ppz.value),
CGAL_to_Interval_nt_advanced(pqx.value),
CGAL_to_Interval_nt_advanced(pqy.value),
CGAL_to_Interval_nt_advanced(pqz.value),
CGAL_to_Interval_nt_advanced(prx.value),
CGAL_to_Interval_nt_advanced(pry.value),
CGAL_to_Interval_nt_advanced(prz.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_larger_signed_dist_to_planeC3(
CGAL_to_exact_type<ET>(ppx.value),
CGAL_to_exact_type<ET>(ppy.value),
CGAL_to_exact_type<ET>(ppz.value),
CGAL_to_exact_type<ET>(pqx.value),
CGAL_to_exact_type<ET>(pqy.value),
CGAL_to_exact_type<ET>(pqz.value),
CGAL_to_exact_type<ET>(prx.value),
CGAL_to_exact_type<ET>(pry.value),
CGAL_to_exact_type<ET>(prz.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_LARGE_INLINE
bool
CGAL_has_smaller_signed_dist_to_planeC3(
const CGAL_Filtering<CT,ET> &ppx,
const CGAL_Filtering<CT,ET> &ppy,
const CGAL_Filtering<CT,ET> &ppz,
const CGAL_Filtering<CT,ET> &pqx,
const CGAL_Filtering<CT,ET> &pqy,
const CGAL_Filtering<CT,ET> &pqz,
const CGAL_Filtering<CT,ET> &prx,
const CGAL_Filtering<CT,ET> &pry,
const CGAL_Filtering<CT,ET> &prz,
const CGAL_Filtering<CT,ET> &px,
const CGAL_Filtering<CT,ET> &py,
const CGAL_Filtering<CT,ET> &pz,
const CGAL_Filtering<CT,ET> &qx,
const CGAL_Filtering<CT,ET> &qy,
const CGAL_Filtering<CT,ET> &qz)
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_has_smaller_signed_dist_to_planeC3(
CGAL_to_Interval_nt_advanced(ppx.value),
CGAL_to_Interval_nt_advanced(ppy.value),
CGAL_to_Interval_nt_advanced(ppz.value),
CGAL_to_Interval_nt_advanced(pqx.value),
CGAL_to_Interval_nt_advanced(pqy.value),
CGAL_to_Interval_nt_advanced(pqz.value),
CGAL_to_Interval_nt_advanced(prx.value),
CGAL_to_Interval_nt_advanced(pry.value),
CGAL_to_Interval_nt_advanced(prz.value),
CGAL_to_Interval_nt_advanced(px.value),
CGAL_to_Interval_nt_advanced(py.value),
CGAL_to_Interval_nt_advanced(pz.value),
CGAL_to_Interval_nt_advanced(qx.value),
CGAL_to_Interval_nt_advanced(qy.value),
CGAL_to_Interval_nt_advanced(qz.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_has_smaller_signed_dist_to_planeC3(
CGAL_to_exact_type<ET>(ppx.value),
CGAL_to_exact_type<ET>(ppy.value),
CGAL_to_exact_type<ET>(ppz.value),
CGAL_to_exact_type<ET>(pqx.value),
CGAL_to_exact_type<ET>(pqy.value),
CGAL_to_exact_type<ET>(pqz.value),
CGAL_to_exact_type<ET>(prx.value),
CGAL_to_exact_type<ET>(pry.value),
CGAL_to_exact_type<ET>(prz.value),
CGAL_to_exact_type<ET>(px.value),
CGAL_to_exact_type<ET>(py.value),
CGAL_to_exact_type<ET>(pz.value),
CGAL_to_exact_type<ET>(qx.value),
CGAL_to_exact_type<ET>(qy.value),
CGAL_to_exact_type<ET>(qz.value));
}
return result;
}
// Sylvain: you can uncomment this whenever you're ready
// #ifdef CGAL_FILTER_H
// #include <CGAL/Filter/predicates_on_ftC3.h>
// #endif
#endif // CGAL_FILTER_PREDICATES_ON_FTC3_H

View File

@ -0,0 +1,333 @@
// ======================================================================
//
// Copyright (c) 1998 The CGAL Consortium
//
// This software and related documentation is part of an INTERNAL release
// of the Computational Geometry Algorithms Library (CGAL). It is not
// intended for general use.
//
// ----------------------------------------------------------------------
//
// release :
// release_date :
//
// source :
// file : include/CGAL/Filter/predicates_on_rtH2.h
// package : Interval_arithmetic
// revision : 1.2.3
// revision_date :
// author(s) : Sylvain.Pion@sophia.inria.fr
//
// coordinator : MPI, Saarbruecken
// ======================================================================
#ifndef CGAL_FILTER_PREDICATES_ON_RTH2_H
#define CGAL_FILTER_PREDICATES_ON_RTH2_H
// This file is automatically generated with the script for filtering
// predicates, using Interval arithmetic.
#include <CGAL/Interval_arithmetic.h>
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
CGAL_Orientation
CGAL_orientationH2( const CGAL_Filtering<CT,ET>& phx,
const CGAL_Filtering<CT,ET>& phy,
const CGAL_Filtering<CT,ET>& phw,
const CGAL_Filtering<CT,ET>& qhx,
const CGAL_Filtering<CT,ET>& qhy,
const CGAL_Filtering<CT,ET>& qhw,
const CGAL_Filtering<CT,ET>& rhx,
const CGAL_Filtering<CT,ET>& rhy,
const CGAL_Filtering<CT,ET>& rhw )
{ // This is the default filter (specialization).
CGAL_Orientation result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_orientationH2(
CGAL_to_Interval_nt_advanced(phx.value),
CGAL_to_Interval_nt_advanced(phy.value),
CGAL_to_Interval_nt_advanced(phw.value),
CGAL_to_Interval_nt_advanced(qhx.value),
CGAL_to_Interval_nt_advanced(qhy.value),
CGAL_to_Interval_nt_advanced(qhw.value),
CGAL_to_Interval_nt_advanced(rhx.value),
CGAL_to_Interval_nt_advanced(rhy.value),
CGAL_to_Interval_nt_advanced(rhw.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_orientationH2(
CGAL_to_exact_type<ET>(phx.value),
CGAL_to_exact_type<ET>(phy.value),
CGAL_to_exact_type<ET>(phw.value),
CGAL_to_exact_type<ET>(qhx.value),
CGAL_to_exact_type<ET>(qhy.value),
CGAL_to_exact_type<ET>(qhw.value),
CGAL_to_exact_type<ET>(rhx.value),
CGAL_to_exact_type<ET>(rhy.value),
CGAL_to_exact_type<ET>(rhw.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
bool
CGAL_leftturnH2( const CGAL_Filtering<CT,ET>& phx,
const CGAL_Filtering<CT,ET>& phy,
const CGAL_Filtering<CT,ET>& phw,
const CGAL_Filtering<CT,ET>& qhx,
const CGAL_Filtering<CT,ET>& qhy,
const CGAL_Filtering<CT,ET>& qhw,
const CGAL_Filtering<CT,ET>& rhx,
const CGAL_Filtering<CT,ET>& rhy,
const CGAL_Filtering<CT,ET>& rhw )
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_leftturnH2(
CGAL_to_Interval_nt_advanced(phx.value),
CGAL_to_Interval_nt_advanced(phy.value),
CGAL_to_Interval_nt_advanced(phw.value),
CGAL_to_Interval_nt_advanced(qhx.value),
CGAL_to_Interval_nt_advanced(qhy.value),
CGAL_to_Interval_nt_advanced(qhw.value),
CGAL_to_Interval_nt_advanced(rhx.value),
CGAL_to_Interval_nt_advanced(rhy.value),
CGAL_to_Interval_nt_advanced(rhw.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_leftturnH2(
CGAL_to_exact_type<ET>(phx.value),
CGAL_to_exact_type<ET>(phy.value),
CGAL_to_exact_type<ET>(phw.value),
CGAL_to_exact_type<ET>(qhx.value),
CGAL_to_exact_type<ET>(qhy.value),
CGAL_to_exact_type<ET>(qhw.value),
CGAL_to_exact_type<ET>(rhx.value),
CGAL_to_exact_type<ET>(rhy.value),
CGAL_to_exact_type<ET>(rhw.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
bool
CGAL_rightturnH2(const CGAL_Filtering<CT,ET>& phx,
const CGAL_Filtering<CT,ET>& phy,
const CGAL_Filtering<CT,ET>& phw,
const CGAL_Filtering<CT,ET>& qhx,
const CGAL_Filtering<CT,ET>& qhy,
const CGAL_Filtering<CT,ET>& qhw,
const CGAL_Filtering<CT,ET>& rhx,
const CGAL_Filtering<CT,ET>& rhy,
const CGAL_Filtering<CT,ET>& rhw )
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_rightturnH2(
CGAL_to_Interval_nt_advanced(phx.value),
CGAL_to_Interval_nt_advanced(phy.value),
CGAL_to_Interval_nt_advanced(phw.value),
CGAL_to_Interval_nt_advanced(qhx.value),
CGAL_to_Interval_nt_advanced(qhy.value),
CGAL_to_Interval_nt_advanced(qhw.value),
CGAL_to_Interval_nt_advanced(rhx.value),
CGAL_to_Interval_nt_advanced(rhy.value),
CGAL_to_Interval_nt_advanced(rhw.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_rightturnH2(
CGAL_to_exact_type<ET>(phx.value),
CGAL_to_exact_type<ET>(phy.value),
CGAL_to_exact_type<ET>(phw.value),
CGAL_to_exact_type<ET>(qhx.value),
CGAL_to_exact_type<ET>(qhy.value),
CGAL_to_exact_type<ET>(qhw.value),
CGAL_to_exact_type<ET>(rhx.value),
CGAL_to_exact_type<ET>(rhy.value),
CGAL_to_exact_type<ET>(rhw.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
bool
CGAL_collinearH2(const CGAL_Filtering<CT,ET>& phx,
const CGAL_Filtering<CT,ET>& phy,
const CGAL_Filtering<CT,ET>& phw,
const CGAL_Filtering<CT,ET>& qhx,
const CGAL_Filtering<CT,ET>& qhy,
const CGAL_Filtering<CT,ET>& qhw,
const CGAL_Filtering<CT,ET>& rhx,
const CGAL_Filtering<CT,ET>& rhy,
const CGAL_Filtering<CT,ET>& rhw )
{ // This is the default filter (specialization).
bool result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_collinearH2(
CGAL_to_Interval_nt_advanced(phx.value),
CGAL_to_Interval_nt_advanced(phy.value),
CGAL_to_Interval_nt_advanced(phw.value),
CGAL_to_Interval_nt_advanced(qhx.value),
CGAL_to_Interval_nt_advanced(qhy.value),
CGAL_to_Interval_nt_advanced(qhw.value),
CGAL_to_Interval_nt_advanced(rhx.value),
CGAL_to_Interval_nt_advanced(rhy.value),
CGAL_to_Interval_nt_advanced(rhw.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_collinearH2(
CGAL_to_exact_type<ET>(phx.value),
CGAL_to_exact_type<ET>(phy.value),
CGAL_to_exact_type<ET>(phw.value),
CGAL_to_exact_type<ET>(qhx.value),
CGAL_to_exact_type<ET>(qhy.value),
CGAL_to_exact_type<ET>(qhw.value),
CGAL_to_exact_type<ET>(rhx.value),
CGAL_to_exact_type<ET>(rhy.value),
CGAL_to_exact_type<ET>(rhw.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
CGAL_Bounded_side
CGAL_side_of_bounded_circleH2( const CGAL_Filtering<CT,ET>& qhx,
const CGAL_Filtering<CT,ET>& qhy,
const CGAL_Filtering<CT,ET>& qhw,
const CGAL_Filtering<CT,ET>& rhx,
const CGAL_Filtering<CT,ET>& rhy,
const CGAL_Filtering<CT,ET>& rhw,
const CGAL_Filtering<CT,ET>& shx,
const CGAL_Filtering<CT,ET>& shy,
const CGAL_Filtering<CT,ET>& shw,
const CGAL_Filtering<CT,ET>& thx,
const CGAL_Filtering<CT,ET>& thy,
const CGAL_Filtering<CT,ET>& thw )
{ // This is the default filter (specialization).
CGAL_Bounded_side result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_side_of_bounded_circleH2(
CGAL_to_Interval_nt_advanced(qhx.value),
CGAL_to_Interval_nt_advanced(qhy.value),
CGAL_to_Interval_nt_advanced(qhw.value),
CGAL_to_Interval_nt_advanced(rhx.value),
CGAL_to_Interval_nt_advanced(rhy.value),
CGAL_to_Interval_nt_advanced(rhw.value),
CGAL_to_Interval_nt_advanced(shx.value),
CGAL_to_Interval_nt_advanced(shy.value),
CGAL_to_Interval_nt_advanced(shw.value),
CGAL_to_Interval_nt_advanced(thx.value),
CGAL_to_Interval_nt_advanced(thy.value),
CGAL_to_Interval_nt_advanced(thw.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_side_of_bounded_circleH2(
CGAL_to_exact_type<ET>(qhx.value),
CGAL_to_exact_type<ET>(qhy.value),
CGAL_to_exact_type<ET>(qhw.value),
CGAL_to_exact_type<ET>(rhx.value),
CGAL_to_exact_type<ET>(rhy.value),
CGAL_to_exact_type<ET>(rhw.value),
CGAL_to_exact_type<ET>(shx.value),
CGAL_to_exact_type<ET>(shy.value),
CGAL_to_exact_type<ET>(shw.value),
CGAL_to_exact_type<ET>(thx.value),
CGAL_to_exact_type<ET>(thy.value),
CGAL_to_exact_type<ET>(thw.value));
}
return result;
}
template < class CT, class ET >
// CGAL_KERNEL_MEDIUM_INLINE
CGAL_Oriented_side
CGAL_side_of_oriented_circleH2(const CGAL_Filtering<CT,ET>& qhx,
const CGAL_Filtering<CT,ET>& qhy,
const CGAL_Filtering<CT,ET>& qhw,
const CGAL_Filtering<CT,ET>& rhx,
const CGAL_Filtering<CT,ET>& rhy,
const CGAL_Filtering<CT,ET>& rhw,
const CGAL_Filtering<CT,ET>& shx,
const CGAL_Filtering<CT,ET>& shy,
const CGAL_Filtering<CT,ET>& shw,
const CGAL_Filtering<CT,ET>& thx,
const CGAL_Filtering<CT,ET>& thy,
const CGAL_Filtering<CT,ET>& thw )
{ // This is the default filter (specialization).
CGAL_Oriented_side result;
CGAL_FPU_set_rounding_to_infinity();
try
{
result = CGAL_side_of_oriented_circleH2(
CGAL_to_Interval_nt_advanced(qhx.value),
CGAL_to_Interval_nt_advanced(qhy.value),
CGAL_to_Interval_nt_advanced(qhw.value),
CGAL_to_Interval_nt_advanced(rhx.value),
CGAL_to_Interval_nt_advanced(rhy.value),
CGAL_to_Interval_nt_advanced(rhw.value),
CGAL_to_Interval_nt_advanced(shx.value),
CGAL_to_Interval_nt_advanced(shy.value),
CGAL_to_Interval_nt_advanced(shw.value),
CGAL_to_Interval_nt_advanced(thx.value),
CGAL_to_Interval_nt_advanced(thy.value),
CGAL_to_Interval_nt_advanced(thw.value));
CGAL_FPU_set_rounding_to_nearest();
}
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
{
CGAL_FPU_set_rounding_to_nearest();
result = CGAL_side_of_oriented_circleH2(
CGAL_to_exact_type<ET>(qhx.value),
CGAL_to_exact_type<ET>(qhy.value),
CGAL_to_exact_type<ET>(qhw.value),
CGAL_to_exact_type<ET>(rhx.value),
CGAL_to_exact_type<ET>(rhy.value),
CGAL_to_exact_type<ET>(rhw.value),
CGAL_to_exact_type<ET>(shx.value),
CGAL_to_exact_type<ET>(shy.value),
CGAL_to_exact_type<ET>(shw.value),
CGAL_to_exact_type<ET>(thx.value),
CGAL_to_exact_type<ET>(thy.value),
CGAL_to_exact_type<ET>(thw.value));
}
return result;
}
#endif // CGAL_FILTER_PREDICATES_ON_RTH2_H