60 research outputs found

    Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates

    Get PDF
    Exact computer arithmetic has a variety of uses including, but not limited to, the robust implementation of geometric algorithms. This report has three purposes. The first is to offer fast software-level algorithms for exact addition and multiplication of arbitrary precision floating-point values. The second is to propose a technique for adaptive-precision arithmetic that can often speed these algorithms when one wishes to perform multiprecision calculations that do not always require exact arithmetic, but must satisfy some error bound. The third is to provide a practical demonstration of these techniques, in the form of implementations of several common geometric calculations whose required degree of accuracy depends on their inputs. These robust geometric predicates are adaptive; their running time depends on the degree of uncertainty of the result, and is usually small. These algorithms work on computers whose floating-point arithmetic uses radix two and exact rounding, including machines complying with the IEEE 754 standard. The inputs to the predicates may be arbitrary single or double precision floating-point numbers. C code is publicly available for the 2D and 3D orientation and incircle tests, an

    Metalibm: A Mathematical Functions Code Generator

    Get PDF
    International audienceThere are several different libraries with code for mathematical functions such as exp, log, sin, cos, etc. They provide only one implementation for each function. As there is a link between accuracy and performance, that approach is not optimal. Sometimes there is a need to rewrite a function's implementation with the respect to a particular specification. In this paper we present a code generator for parametrized implementations of mathematical functions. We discuss the benefits of code generation for mathematical libraries and present how to implement mathematical functions. We also explain how the mathematical functions are usually implemented and generalize this idea for the case of arbitrary function with implementation parameters. Our code generator produces C code for parametrized functions within a known scheme: range reduction (domain splitting), polynomial approximation and reconstruction. This approach can be expanded to generate code for black-box functions, e.g. defined only by differential equations

    Building a 3D meshing framework using good software engineering practices

    Get PDF
    3D meshing tools are complex pieces of software involving varied algorithms generally with high computing demands. New requirements and techniques appear continuously and being able to incorporate them into existing tools helps keep them up to date. Modifying complex software is generally a complex task and software engineering strategies such as object-orientation and design patterns promote modifiability and flexibility. We present the design of a 3D meshing framework based on these concepts that yields a software that is both flexible at runtime and easy to modify, while not sacrificing performance severely. We also present an evaluation of the framework design quality and performance1st International Workshop on Advanced Software Engineering: Expanding the Frontiers of Software Technology - Experiences in Software DevelopmentRed de Universidades con Carreras en Informática (RedUNCI

    Formal certification of arithmetic filters for geometric predicates

    Get PDF
    International audienceFloating-point arithmetic provides a fast but inexact way of computing geometric predicates. In order for these predicates to be exact, it is important to rule out all the numerical situations where floating-point computations could lead to wrong results. Taking into account all the potential problems is a tedious work to do by hand. We study in this paper a floating-point implementation of a filter for the orientation-2 predicate, and how a formal and partially automatized verification of this algorithm avoided many pitfalls. The presented method is not limited to this particular predicate, it can easily be used to produce correct semi-static floating-point filters for other geometric predicates

    Load-Balancing for Parallel Delaunay Triangulations

    Get PDF
    Computing the Delaunay triangulation (DT) of a given point set in RD\mathbb{R}^D is one of the fundamental operations in computational geometry. Recently, Funke and Sanders (2017) presented a divide-and-conquer DT algorithm that merges two partial triangulations by re-triangulating a small subset of their vertices - the border vertices - and combining the three triangulations efficiently via parallel hash table lookups. The input point division should therefore yield roughly equal-sized partitions for good load-balancing and also result in a small number of border vertices for fast merging. In this paper, we present a novel divide-step based on partitioning the triangulation of a small sample of the input points. In experiments on synthetic and real-world data sets, we achieve nearly perfectly balanced partitions and small border triangulations. This almost cuts running time in half compared to non-data-sensitive division schemes on inputs exhibiting an exploitable underlying structure.Comment: Short version submitted to EuroPar 201

    Building a 3D meshing framework using good software engineering practices

    Get PDF
    3D meshing tools are complex pieces of software involving varied algorithms generally with high computing demands. New requirements and techniques appear continuously and being able to incorporate them into existing tools helps keep them up to date. Modifying complex software is generally a complex task and software engineering strategies such as object-orientation and design patterns promote modifiability and flexibility. We present the design of a 3D meshing framework based on these concepts that yields a software that is both flexible at runtime and easy to modify, while not sacrificing performance severely. We also present an evaluation of the framework design quality and performance1st International Workshop on Advanced Software Engineering: Expanding the Frontiers of Software Technology - Experiences in Software DevelopmentRed de Universidades con Carreras en Informática (RedUNCI
    • …
    corecore