Currently Phcpack is an optional package for sage. Its main purpose is to numerically compute isolated solutions of polynomial systems, although it has some other functionality as well (e.g. computing mixed volumes, witness sets for higher-dimensional solution components).
I have wanted Phcpack to be standard in Sage for a while, but have been blocked by concerns about portability. Phcpack is written in Ada. Recently Jan Verschelde (the author of Phcpack) and his students have added some C and Python interfaces, which help integration efforts but don't solve the portability issue. I discussed this situation recently with Jan (who I am cc'ing on this email in case he has clarifications or corrections) and he seems willing to work with me on porting Phcpack into Sage as a native program. Although Phcpack is pretty fast, there are closed source programs that seem quite a bit faster at the moment (although its not a simple comparison, they different strengths and weaknesses). A Sage implementation could be quite a bit faster by taking advantage of Sage's linear algebra and other components. My plan for doing this is to move in the functionality piece by piece starting in late Febuary (earlier if I can magically find extra time). The first piece will be a parameter-homotopy path tracker, since I understand that part the best at the moment and its relatively straightforward. This would take as input a polynomial start system and a list of solutions to the start system, and a target system. The algorithm would deform the start system and its solutions into the target system and its corresponding solutions. There is quite a bit of literature on how to do this, and if Jan helps me understand how Phcpack does this I think it won't be hard to get something running. Optimizing it will probably take longer but I know there are some Sage developers out there who might find it fun to help. After the parameter homotopy, we would need: 1) A way to compute mixed volumes and the cells of a mixed subdivision. Jan ported a C implementation in Ada to do this, so he thinks it might be fairly easy for him to do this. 2) Create ways to generate start systems and their solutions. The main way is to use the mixed subdivision from (1), but there are some alternatives. 3) Routines for "endgames" - issues that arise at the end of homotopies, where solutions might be degenerate in various senses. 4) Techniques for higher-dimensional solution components. I imagine that Jan and I and our students will do most of this, but we will need some help and I am soliciting it in advance. One thing I need is a deeper knowledge of Cython, which will be crucial in getting our implementation competitive with closed source alternatives. -Marshall Hampton --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---