论文标题
快速的浮点过滤器,用于稳健谓词
Fast Floating-Point Filters for Robust Predicates
论文作者
论文摘要
几何谓词是许多算法的核心,例如构造Delaunay三角构,网格处理和空间关系测试。这些算法在科学计算,地理信息系统和计算机辅助设计中具有应用。对于浮点算术,这些几何谓词会引起圆形误差,这可能导致结果不正确和不一致,从而导致计算失败。使用精确算术的鲁棒性和浮点过滤器的组合来解决此问题,以减轻精确计算的计算成本。精确计算和浮点过滤器的实现可能是一项艰巨的任务,并且已经提出了代码生成工具来解决此问题。我们提出了一个新的C ++元编程框架,用于基于多项式表达式的任意几何谓词的快速,健壮的谓词。我们结合并扩展了以前提出的过滤,减少分支减少和溢出的不同方法。我们展示了这种方法如何为数据集产生正确的结果,这些数据集可能会导致不正确的谓词结果,并呈幼稚实现。我们的基准结果表明,我们的实施超过了最新的实施。
Geometric predicates are at the core of many algorithms, such as the construction of Delaunay triangulations, mesh processing and spatial relation tests. These algorithms have applications in scientific computing, geographic information systems and computer-aided design. With floating-point arithmetic, these geometric predicates can incur round-off errors that may lead to incorrect results and inconsistencies, causing computations to fail. This issue has been addressed using a combination of exact arithmetic for robustness and floating-point filters to mitigate the computational cost of exact computations. The implementation of exact computations and floating-point filters can be a difficult task, and code generation tools have been proposed to address this. We present a new C++ meta-programming framework for the generation of fast, robust predicates for arbitrary geometric predicates based on polynomial expressions. We combine and extend different approaches to filtering, branch reduction, and overflow avoidance that have previously been proposed. We show examples of how this approach produces correct results for data sets that could lead to incorrect predicate results with naive implementations. Our benchmark results demonstrate that our implementation surpasses state-of-the-art implementations.