kernel_ftc3.h
来自「CGAL is a collaborative effort of severa」· C头文件 代码 · 共 1,787 行 · 第 1/4 页
H
1,787 行
// 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_ftC3.h,v $// $Revision: 1.34 $ $Date: 2004/01/18 12:06:28 $// $Name: $//// Author(s) : Sylvain Pion// This file is automatically generated by// scripts/filtered_predicates_generator.pl#ifndef CGAL_ARITHMETIC_FILTER_PREDICATES_KERNEL_FTC3_H#define CGAL_ARITHMETIC_FILTER_PREDICATES_KERNEL_FTC3_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 */boolparallelC3( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &v1x, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &v1y, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &v1z, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &v2x, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &v2y, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &v2z){ try { CGAL_PROFILER("IA parallelC3 calls"); Protect_FPU_rounding<Protected> Protection; return parallelC3( v1x.interval(), v1y.interval(), v1z.interval(), v2x.interval(), v2y.interval(), v2z.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA parallelC3 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return parallelC3( v1x.exact(), v1y.exact(), v1z.exact(), v2x.exact(), v2y.exact(), v2z.exact()); }}template < class ET >/* inline */boolparallelC3( const Lazy_exact_nt<ET> &v1x, const Lazy_exact_nt<ET> &v1y, const Lazy_exact_nt<ET> &v1z, const Lazy_exact_nt<ET> &v2x, const Lazy_exact_nt<ET> &v2y, const Lazy_exact_nt<ET> &v2z){ try { CGAL_PROFILER("Lazy IA parallelC3 calls"); Protect_FPU_rounding<true> Protection; return parallelC3( v1x.interval(), v1y.interval(), v1z.interval(), v2x.interval(), v2y.interval(), v2z.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA parallelC3 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return parallelC3( v1x.exact(), v1y.exact(), v1z.exact(), v2x.exact(), v2y.exact(), v2z.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* */boolparallelC3( 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> &s1sz, 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> &s1tz, 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> &s2sz, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2tx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2ty, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &s2tz){ try { CGAL_PROFILER("IA parallelC3 calls"); Protect_FPU_rounding<Protected> Protection; return parallelC3( s1sx.interval(), s1sy.interval(), s1sz.interval(), s1tx.interval(), s1ty.interval(), s1tz.interval(), s2sx.interval(), s2sy.interval(), s2sz.interval(), s2tx.interval(), s2ty.interval(), s2tz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA parallelC3 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return parallelC3( s1sx.exact(), s1sy.exact(), s1sz.exact(), s1tx.exact(), s1ty.exact(), s1tz.exact(), s2sx.exact(), s2sy.exact(), s2sz.exact(), s2tx.exact(), s2ty.exact(), s2tz.exact()); }}template < class ET >/* */boolparallelC3( const Lazy_exact_nt<ET> &s1sx, const Lazy_exact_nt<ET> &s1sy, const Lazy_exact_nt<ET> &s1sz, const Lazy_exact_nt<ET> &s1tx, const Lazy_exact_nt<ET> &s1ty, const Lazy_exact_nt<ET> &s1tz, const Lazy_exact_nt<ET> &s2sx, const Lazy_exact_nt<ET> &s2sy, const Lazy_exact_nt<ET> &s2sz, const Lazy_exact_nt<ET> &s2tx, const Lazy_exact_nt<ET> &s2ty, const Lazy_exact_nt<ET> &s2tz){ try { CGAL_PROFILER("Lazy IA parallelC3 calls"); Protect_FPU_rounding<true> Protection; return parallelC3( s1sx.interval(), s1sy.interval(), s1sz.interval(), s1tx.interval(), s1ty.interval(), s1tz.interval(), s2sx.interval(), s2sy.interval(), s2sz.interval(), s2tx.interval(), s2ty.interval(), s2tz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA parallelC3 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return parallelC3( s1sx.exact(), s1sy.exact(), s1sz.exact(), s1tx.exact(), s1ty.exact(), s1tz.exact(), s2sx.exact(), s2sy.exact(), s2sz.exact(), s2tx.exact(), s2ty.exact(), s2tz.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */boolstrict_dominanceC3( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &px, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &py, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &pz, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qy, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qz){ try { CGAL_PROFILER("IA strict_dominanceC3 calls"); Protect_FPU_rounding<Protected> Protection; return strict_dominanceC3( px.interval(), py.interval(), pz.interval(), qx.interval(), qy.interval(), qz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA strict_dominanceC3 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return strict_dominanceC3( px.exact(), py.exact(), pz.exact(), qx.exact(), qy.exact(), qz.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */boolstrict_dominanceC3( const Lazy_exact_nt<ET> &px, const Lazy_exact_nt<ET> &py, const Lazy_exact_nt<ET> &pz, const Lazy_exact_nt<ET> &qx, const Lazy_exact_nt<ET> &qy, const Lazy_exact_nt<ET> &qz){ try { CGAL_PROFILER("Lazy IA strict_dominanceC3 calls"); Protect_FPU_rounding<true> Protection; return strict_dominanceC3( px.interval(), py.interval(), pz.interval(), qx.interval(), qy.interval(), qz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA strict_dominanceC3 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return strict_dominanceC3( px.exact(), py.exact(), pz.exact(), qx.exact(), qy.exact(), qz.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */booldominanceC3( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &px, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &py, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &pz, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qy, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qz){ try { CGAL_PROFILER("IA dominanceC3 calls"); Protect_FPU_rounding<Protected> Protection; return dominanceC3( px.interval(), py.interval(), pz.interval(), qx.interval(), qy.interval(), qz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA dominanceC3 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return dominanceC3( px.exact(), py.exact(), pz.exact(), qx.exact(), qy.exact(), qz.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */booldominanceC3( const Lazy_exact_nt<ET> &px, const Lazy_exact_nt<ET> &py, const Lazy_exact_nt<ET> &pz, const Lazy_exact_nt<ET> &qx, const Lazy_exact_nt<ET> &qy, const Lazy_exact_nt<ET> &qz){ try { CGAL_PROFILER("Lazy IA dominanceC3 calls"); Protect_FPU_rounding<true> Protection; return dominanceC3( px.interval(), py.interval(), pz.interval(), qx.interval(), qy.interval(), qz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA dominanceC3 failures"); Protect_FPU_rounding<false> Protection(CGAL_FE_TONEAREST); return dominanceC3( px.exact(), py.exact(), pz.exact(), qx.exact(), qy.exact(), qz.exact()); }}template < class CT, class ET, bool Protected, class Cache >/* CGAL_KERNEL_MEDIUM_INLINE */boolcollinearC3( const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &px, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &py, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &pz, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qy, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &qz, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &rx, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &ry, const Filtered_exact <CT, ET, Dynamic, Protected, Cache> &rz){ try { CGAL_PROFILER("IA collinearC3 calls"); Protect_FPU_rounding<Protected> Protection; return collinearC3( px.interval(), py.interval(), pz.interval(), qx.interval(), qy.interval(), qz.interval(), rx.interval(), ry.interval(), rz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("IA collinearC3 failures"); Protect_FPU_rounding<!Protected> Protection(CGAL_FE_TONEAREST); return collinearC3( px.exact(), py.exact(), pz.exact(), qx.exact(), qy.exact(), qz.exact(), rx.exact(), ry.exact(), rz.exact()); }}template < class ET >/* CGAL_KERNEL_MEDIUM_INLINE */boolcollinearC3( const Lazy_exact_nt<ET> &px, const Lazy_exact_nt<ET> &py, const Lazy_exact_nt<ET> &pz, const Lazy_exact_nt<ET> &qx, const Lazy_exact_nt<ET> &qy, const Lazy_exact_nt<ET> &qz, const Lazy_exact_nt<ET> &rx, const Lazy_exact_nt<ET> &ry, const Lazy_exact_nt<ET> &rz){ try { CGAL_PROFILER("Lazy IA collinearC3 calls"); Protect_FPU_rounding<true> Protection; return collinearC3( px.interval(), py.interval(), pz.interval(), qx.interval(), qy.interval(), qz.interval(), rx.interval(), ry.interval(), rz.interval()); } catch (Interval_nt_advanced::unsafe_comparison) { CGAL_PROFILER("Lazy IA collinearC3 failures");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?