Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically generated, fast, robust floating-point predicates (WIP) #734

Closed

Conversation

tinko92
Copy link
Collaborator

@tinko92 tinko92 commented Jul 9, 2020

EDIT: closed in favor of more reasonably sized PR: #739

This pull request contains the first part of my GSoC 2020 project. This code is still work in progress and there might be changes to the interface before the end of GSoC.

The project aims to implement a number of facilities that allow easy creation of fast and robust geometric floating-point predicates, such as, for example, orientation tests (Boost.Geometry currently has a 2d orientation test in the side-strategy). As of writing this, the pull request contains templates to

  • automatically derive error bounds for the approximate evaluation of such expressions
  • build static, almost static and semi-static filters from these building blocks

I intend to add

  • generation of functions for the exact evaluation of arbitrary arithmetic floating-point expressions containing +, - and * using expansion arithmetic
  • improvements for the error bound derivation
  • an alternative method for error bound derivation
  • some additional filters
  • automatic detection of reusable interim results between filter stages

The usage of the various templates for the creation of geometric predicates is illustrated in the tests and the example.

This pull request depends on Boost.MP11, which depends on C++11 but has no additional dependencies. The code itself depends on C++14 because of certain constexpr features.

@tinko92 tinko92 force-pushed the feature/generic_robust_predicates branch from b77c5e2 to b59b651 Compare July 28, 2020 11:03
@tinko92 tinko92 force-pushed the feature/generic_robust_predicates branch from b59b651 to 5b63bdc Compare July 28, 2020 11:12
@tinko92 tinko92 closed this Jul 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants