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
PMP Corefinement hard-codes the use of Epeck in various places. #5119
Comments
What environment are you using? |
This issue isn't environment dependent. However, the reason that I noticed it is that I am using wasm, which means that Epeck doesn't work, but kernels like Simple_cartesian<Gmpq> seem to. |
The use of EPECK is here for robustness issues. In practice I could get rid of it but this requires a major effort. Why Epeck does not work? Are you simply having trouble with rounding mode changes and is the issue (also) related to gmp? |
Yes, I believe it's due to the lack of rounding mode change support in wasm. gmp seems to work because it does not rely on rounding modes. What I was thinking is that it might be relatively simple (if tedious) to wire an Exact_kernel template parameter through to these Epeck and allow a user to supply an alternate kernel to use for these robust operations. Defaulting this parameter to Epeck would preserve current behavior. Does that sound like a workable approach? |
The pb is that without interval you have no filter at all so even if we replace the internal |
That would be great -- I was wondering if there would be a reasonable way to get a slightly slower Epeck happening without rounding magic. I understand that there may be performance issues, but at least it should be testable. So it sounds like making the internal exact kernel parameterizable is the right thing to do regardless, and there are no real downsides to it. If so, I'll give it a go in a bit. |
Thinking about it, what you want is simply changing what So editing
should be sufficient. I don't think there is an automatic way to detect when |
Ok, this seems to be more or less working given: class Epeck : public Type_equality_wrapper<Simple_cartesian<Epeck_ft>::Base<Epeck>::Type, Epeck> {}; Although that also needed a little patch in This was enough to get corefinement working. I'll put a PR together in a couple of days and see how it goes. Thanks. |
Issue Details
PMP Corefinement hard-codes the use of Epeck in various places.
This makes it impossible to use with environments that do not support Epeck.
I was going to try to wire through the template parameters so that the a kernel could be configured, but I thought I'd better ask first in case there's some interesting reason for this hard-coding.
Is there any reason to keep the hard coding? :)
Source Code
cgal/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_impl.h
Line 557 in 4db56d8
Environment
The text was updated successfully, but these errors were encountered: