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
Implement Zariski-VanKampen method to compute fundamental groups of complements of plane curves. #21045
Comments
Attachment: libsirocco-1.1.tar.gz The sirocco library. |
This comment has been minimized.
This comment has been minimized.
comment:1
Add link to Sirocco library in ticket description. |
Author: Miguel Marco |
New commits:
|
Commit: |
comment:4
This does no longer merge with current sage releases. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
This comment has been minimized.
This comment has been minimized.
comment:7
I think it is ready for review. Note that in order for the functionality to be available, the package sirocco 2 must be installed. The tarball must be downloaded and copied to the upstream directory. Note also that currently the file name must be corrected (there is a superfluous underscore). I asked the webmaster to correct it. |
comment:8
The quick comments:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:10
Thanks for the review. Replying to @tscrim:
Fixed (I think I didn't miss anyone).
There is a reason for that: I didn't know about cpdef until now. About the return type, it should be list[list[RealNumber]], but that doesn't seem to work. list[list] works though. What is exactly the problem with list comprehension?
Done, but I don't see any advantage in doing so. If there is a speedup, it is negligible.
Fixed.
I tried it, but got some error messages related to the use of parallel functions. Anyways, I don't expect a significant speedup by compiling it: the bottlenecks are calls to external functions (mainly discriminant computation and contpath calls). The only part that could benefit from compilation is the braid reconstruction from the piecewise linear paths, but my experience shows that this time is very small compared to the computation of the paths themselves. I could try to cythonize it, but would need some help.
Fixed.
Fixed.
I tried several ways and this was the one that worked. If you remember a better way, please let me know.
Fixed. |
comment:11
I can do a first attempt at cythonizing. Do you have a good test case that is not too slow nor too fast to do profiling on to see where the current bottlenecks are? The reason I bring up the list comprehension is Cython cannot handle them in c(p)def (maybe just cpdef) functions. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:13
I fixed some doctest and a bug that prevented it to work when the variables where not x and y. About nontrivial examples to test, here are two: This one is a good example of the power of sirocco: this group is computed in a few seconds, and as far as I know, it has never been computed before (even though the curve has been explicitely studied)
This other one takes a couple of minutes in my laptop. It was the motivation for the writing of GAP3's VKCURVE package (which computes it in almost half an hour in the same computer):
I did some tests cythonizing some of the functions in Are you sure about the list comprehension problem? It seems to work fine in this cpdef'ed function. |
Reviewer: Travis Scrimshaw |
comment:14
I've hit that list comprehension problem before. shrugs From doing some profiling, I agree that there is no real gain from the extra Cythonization. I made some changes to improve the Cython generated code, removed trailing whitespace, cleaned up the documentation and imports, and some other misc tweaks. So the code should be slight improvement in speed, but likely marginal. Mainly it is cleaner code. If my changes look good, then you can set a positive review (unless you can add an doctest to the functions in New commits:
|
comment:15
Thanks for the review! |
comment:16
On 32-bit
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:18
I guess that is a discrpancy on the rounding unit. Added some tolerance to the doctest. |
Changed branch from public/topology/zariski_van_kampen_plane_curves-21045 to |
This ticket implements the computation of the fundamental group of the complement of a plane (affine or projective) curve over the rationals or number fields with an embedding in QQbar (in theory it could be done for more general fields, but most likely wouldn't be practical).
Some use examples:
It relies on version 2 of the SIROCCO library [1] that performs a certified root continuation method specifically tailored for this task.
This same ticket implements the inclusion of Sirocco as an optional package (so it must be installed in order for the functinality to be available). The tarball is available in [2].
CC: @sagetrac-gjorgenson @bhutz @sagetrac-caravantes @tscrim
Component: algebraic geometry
Author: Miguel Marco
Branch/Commit:
d0b297e
Reviewer: Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/21045
The text was updated successfully, but these errors were encountered: