kernel_ftc2.h
来自「CGAL is a collaborative effort of severa」· C头文件 代码 · 共 1,955 行 · 第 1/4 页
H
1,955 行
// Copyright (c) 1997-2003 Utrecht University (The Netherlands),// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),// and Tel-Aviv University (Israel). 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.//// $Source: /CVSROOT/CGAL/Packages/Interval_arithmetic/include/CGAL/Arithmetic_filter/predicates/kernel_ftC2.h,v $// $Revision: 1.36 $ $Date: 2004/01/18 12:06:27 $// $Name: $//// Author(s) : Sylvain Pion// This file is automatically generated by// scripts/filtered_predicates_generator.pl#ifndef CGAL_ARITHMETIC_FILTER_PREDICATES_KERNEL_FTC2_H#define CGAL_ARITHMETIC_FILTER_PREDICATES_KERNEL_FTC2_H#include <CGAL/Profile_counter.h>CGAL_BEGIN_NAMESPACEtemplate <class ET> class Lazy_exact_nt;CGAL_END_NAMESPACECGAL_BEGIN_NAMESPACEtemplate < class CT, class ET, bool Protected, class Cache >/* inline */boolparallelC2( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2b){ try { CGAL_PROFILER("IA parallelC2 calls"); Protect_FPU_rounding<Protected> Protection; return parallelC2( l1a.interval(), l1b.interval(), l2a.interval(), l2b.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA parallelC2 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return parallelC2( l1a.exact(), l1b.exact(), l2a.exact(), l2b.exact()); }}template < class ET >/* inline */boolparallelC2( const Lazy_exact_nt<ET> &l1a, const Lazy_exact_nt<ET> &l1b, const Lazy_exact_nt<ET> &l2a, const Lazy_exact_nt<ET> &l2b){ try { CGAL_PROFILER("Lazy IA parallelC2 calls"); Protect_FPU_rounding<true> Protection; return parallelC2( l1a.interval(), l1b.interval(), l2a.interval(), l2b.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA parallelC2 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return parallelC2( l1a.exact(), l1b.exact(), l2a.exact(), l2b.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* */boolparallelC2( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s1sx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s1sy, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s1tx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s1ty, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2sx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2sy, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2tx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2ty){ try { CGAL_PROFILER("IA parallelC2 calls"); Protect_FPU_rounding<Protected> Protection; return parallelC2( s1sx.interval(), s1sy.interval(), s1tx.interval(), s1ty.interval(), s2sx.interval(), s2sy.interval(), s2tx.interval(), s2ty.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA parallelC2 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return parallelC2( s1sx.exact(), s1sy.exact(), s1tx.exact(), s1ty.exact(), s2sx.exact(), s2sy.exact(), s2tx.exact(), s2ty.exact()); }}template < class ET >/* */boolparallelC2( const Lazy_exact_nt<ET> &s1sx, const Lazy_exact_nt<ET> &s1sy, const Lazy_exact_nt<ET> &s1tx, const Lazy_exact_nt<ET> &s1ty, const Lazy_exact_nt<ET> &s2sx, const Lazy_exact_nt<ET> &s2sy, const Lazy_exact_nt<ET> &s2tx, const Lazy_exact_nt<ET> &s2ty){ try { CGAL_PROFILER("Lazy IA parallelC2 calls"); Protect_FPU_rounding<true> Protection; return parallelC2( s1sx.interval(), s1sy.interval(), s1tx.interval(), s1ty.interval(), s2sx.interval(), s2sy.interval(), s2tx.interval(), s2ty.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA parallelC2 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return parallelC2( s1sx.exact(), s1sy.exact(), s1tx.exact(), s1ty.exact(), s2sx.exact(), s2sy.exact(), s2tx.exact(), s2ty.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */boolequal_lineC2( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1c, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2c){ try { CGAL_PROFILER("IA equal_lineC2 calls"); Protect_FPU_rounding<Protected> Protection; return equal_lineC2( l1a.interval(), l1b.interval(), l1c.interval(), l2a.interval(), l2b.interval(), l2c.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA equal_lineC2 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return equal_lineC2( l1a.exact(), l1b.exact(), l1c.exact(), l2a.exact(), l2b.exact(), l2c.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */boolequal_lineC2( const Lazy_exact_nt<ET> &l1a, const Lazy_exact_nt<ET> &l1b, const Lazy_exact_nt<ET> &l1c, const Lazy_exact_nt<ET> &l2a, const Lazy_exact_nt<ET> &l2b, const Lazy_exact_nt<ET> &l2c){ try { CGAL_PROFILER("Lazy IA equal_lineC2 calls"); Protect_FPU_rounding<true> Protection; return equal_lineC2( l1a.interval(), l1b.interval(), l1c.interval(), l2a.interval(), l2b.interval(), l2c.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA equal_lineC2 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return equal_lineC2( l1a.exact(), l1b.exact(), l1c.exact(), l2a.exact(), l2b.exact(), l2c.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */Comparison_resultcompare_xC2( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &px, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &la, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &lb, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &lc, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &ha, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &hb, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &hc){ try { CGAL_PROFILER("IA compare_xC2 calls"); Protect_FPU_rounding<Protected> Protection; return compare_xC2( px.interval(), la.interval(), lb.interval(), lc.interval(), ha.interval(), hb.interval(), hc.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA compare_xC2 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return compare_xC2( px.exact(), la.exact(), lb.exact(), lc.exact(), ha.exact(), hb.exact(), hc.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */Comparison_resultcompare_xC2( const Lazy_exact_nt<ET> &px, const Lazy_exact_nt<ET> &la, const Lazy_exact_nt<ET> &lb, const Lazy_exact_nt<ET> &lc, const Lazy_exact_nt<ET> &ha, const Lazy_exact_nt<ET> &hb, const Lazy_exact_nt<ET> &hc){ try { CGAL_PROFILER("Lazy IA compare_xC2 calls"); Protect_FPU_rounding<true> Protection; return compare_xC2( px.interval(), la.interval(), lb.interval(), lc.interval(), ha.interval(), hb.interval(), hc.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA compare_xC2 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return compare_xC2( px.exact(), la.exact(), lb.exact(), lc.exact(), ha.exact(), hb.exact(), hc.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */Comparison_resultcompare_xC2( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &la, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &lb, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &lc, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h1a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h1b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h1c, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h2a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h2b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h2c){ try { CGAL_PROFILER("IA compare_xC2 calls"); Protect_FPU_rounding<Protected> Protection; return compare_xC2( la.interval(), lb.interval(), lc.interval(), h1a.interval(), h1b.interval(), h1c.interval(), h2a.interval(), h2b.interval(), h2c.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA compare_xC2 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return compare_xC2( la.exact(), lb.exact(), lc.exact(), h1a.exact(), h1b.exact(), h1c.exact(), h2a.exact(), h2b.exact(), h2c.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */Comparison_resultcompare_xC2( const Lazy_exact_nt<ET> &la, const Lazy_exact_nt<ET> &lb, const Lazy_exact_nt<ET> &lc, const Lazy_exact_nt<ET> &h1a, const Lazy_exact_nt<ET> &h1b, const Lazy_exact_nt<ET> &h1c, const Lazy_exact_nt<ET> &h2a, const Lazy_exact_nt<ET> &h2b, const Lazy_exact_nt<ET> &h2c){ try { CGAL_PROFILER("Lazy IA compare_xC2 calls"); Protect_FPU_rounding<true> Protection; return compare_xC2( la.interval(), lb.interval(), lc.interval(), h1a.interval(), h1b.interval(), h1c.interval(), h2a.interval(), h2b.interval(), h2c.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA compare_xC2 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return compare_xC2( la.exact(), lb.exact(), lc.exact(), h1a.exact(), h1b.exact(), h1c.exact(), h2a.exact(), h2b.exact(), h2c.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */Comparison_resultcompare_xC2( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l1c, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h1a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h1b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h1c, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &l2c, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h2a, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h2b, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &h2c){ try { CGAL_PROFILER("IA compare_xC2 calls"); Protect_FPU_rounding<Protected> Protection; return compare_xC2( l1a.interval(), l1b.interval(), l1c.interval(), h1a.interval(), h1b.interval(), h1c.interval(), l2a.interval(), l2b.interval(), l2c.interval(), h2a.interval(), h2b.interval(), h2c.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA compare_xC2 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return compare_xC2( l1a.exact(), l1b.exact(), l1c.exact(), h1a.exact(), h1b.exact(), h1c.exact(), l2a.exact(), l2b.exact(), l2c.exact(), h2a.exact(), h2b.exact(), h2c.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */Comparison_result
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?