phcpy 1.1.2 offers a simple Python interface to PHCv2.4.86

This directory was added since release 2.3.41 of PHCpack,
in collaboration with Kathy Piret.
Release 0.3.3 of phcpy offers the new module sweepers.py,
which exports the sweep homotopies, described in the paper
"Sweeping Algebraic Curves for Singular Solutions"
by Kathy Piret and Jan Verschelde, published in the
Journal of Computational and Applied Mathematics,
volume 234, number 4, pages 1228-1237, 2010. 

The module phcpy needs the C extension module phcpy2c,
which should be available as a shared object file.
By default, the "make phcpy2c2.so" for python2 command will place
this shared object file in the directory PHCpy2/phcpy.
To compile phcpy2c2.so on Unix, the fPIC option must be used for all files,
so it is recommended to first execute "make clean" before "make phcpy2c2.so".
For python3, the shared object file is phcpy2c3.so and the code for phcpy
is in the folder PHCpy3/phcpy.

In version 2.3.71, documentation was generated with Sphinx,
see the "doc" directory and the modules examples and phcsols were added.
The module schubert.py was added in 2.3.73 and a plain version of the
monodromy factorization was provided in phcsets.py in release 2.3.74.

Release 2.4 corresponds to the first version of the GPU accelerated
path trackers in the trackers module of phcpy.
See the setup.py file for the specific shared object modules needed
to install for the specific precision levels.

Version 0.3.7 provided the key tools to compute a numerical
irreducible decomposition.  In version 0.6.9, the code in the module sets
was redistributed, leading to three new modules: cascades, factor, and
diagonal.  Better support for Laurent polynomials was added as well.

The package phcpy is defined in the directory PHCpy.
The directory PHCpy3 contains the version of phcpy for Python 3.5+.
The directory Jupyter contains an extension of the Jupyter notebook,
which defines the menus for using phcpy in SageMath and python.
The use of phcpy on a server hosted by JupyterHub was defined in
collaboration with Jasmine Otto, and presented at SciPy 2019,
described in the paper by Jasmine Otto, Angus Forbes, and Jan Verschelde:
"Solving Polynomial Systems with phcpy", in the Proceedings of the
18th Python in Science Conference (SciPy 2019), edited by Chris Calloway,
David Lippa, Dillon Niederhut, and David Shupe, pages 58-64, 2019.

Version 1.0.1 of phcpy started to provide an object oriented interface,
with classes Solution and Polynomials, to respectively represent a
solution and a system of polynomials.

------------------------------------------------------------------------------
file name              : short description
------------------------------------------------------------------------------
cascades.py            : homotopies to compute generic points
curves.py              : approximate algebraic curves
examples.py            : some interesting benchmark examples
dashboard.py           : prototypes a graphical user interface
diagonal.py            : homotopies to intersect solution sets
factor.py              : factor pure dimensional set into irreducibles
families.py            : a couple of families of systems
interface.py           : load/store data to C interface with PHCpack
maps.py                : monomial maps as solutions of binomials
polynomials.py         : defines the class Polynomials
polytopes.py           : convex hulls and mixed volumes of Newton polytopes
schubert.py            : numerical Schubert calculus
series.py              : power series solutions and robust path tracker
sets.py                : manipulate algebraic sets
solutions.py           : turns PHCpack solution strings into dictionaries
solver.py              : use of C extension module phcpy2c
sweepers.py            : homotopies to sweep through parameter space
trackers.py            : path trackers
tropisms.py            : numerically computed tropisms
tuning.py              : tuning tolerances and parameters for path trackers
server.py              : client/server for beowulf clusters
------------------------------------------------------------------------------

The modules examples, solver, solutions provide tests which are executed
by "python examples.py" (regression test), "python solver.py" (tests solver),
and "python solutions.py" (test on checking the solutions dictionaries).

Release history:
1.1.2 : 2022-05-30 : bugs fixed for the embed functions of the sets module
1.1.1 : 2021-02-26 : fixed type error in factor module
1.1.0 : 2020-12-15 : solve method of Polynomials retrieves gamma constant
1.0.9 : 2020-11-30 : support_sets() function, extended the Polynomials class
1.0.8 : 2020-10-31 : improved function support() checks on number of symbols
1.0.7 : 2020-09-30 : option to focus on polyhedral homotopies in solver
1.0.6 : 2020-07-30 : added verbose level parameter in the solver module
1.0.5 : 2020-07-01 : function in solver module for condition report 
1.0.4 : 2020-06-12 : condition tables in the solutions module
1.0.3 : 2020-04-29 : bug fix in sweepers module
1.0.2 : 2019-10-21 : improved documentation
1.0.1 : 2019-10-03 : class definitions for polynomials and solutions
1.0.0 : 2019-09-01 : support for m-homogenization in trackers of curves
0.9.9 : 2019-08-13 : step-by-step trackers in curves support 1-homogenization
0.9.8 : 2019-07-25 : support for the tableau format of a polynomial system
0.9.7 : 2019-07-05 : improved step-by-step Pade continuation
0.9.6 : 2019-06-21 : improved random_coefficient_system in the solver module
0.9.5 : 2019-05-17 : test in curves module for natural parameter homotopy
0.9.4 : 2019-03-29 : gamma added to step-by-step path tracker in trackers
0.9.3 : 2019-02-28 : fixed errors in documentation for path trackers
0.9.2 : 2019-01-19 : step-by-step Pade continuation for natural homotopies
0.9.1 : 2018-12-28 : improved module curves, step-by-step Pade continuation
0.9.0 : 2018-12-10 : new module curves to apply Pade approximants in trackers
0.8.9 : 2018-11-11 : removed fixed degree bound on the power series
0.8.8 : 2018-10-14 : fixed memory leak in algorithmic differentiation trackers
0.8.7 : 2018-09-27 : fixed regression tests in the examples module
0.8.6 : 2018-08-31 : wrapped phc -B function in solvers of the factor module
0.8.5 : 2018-08-14 : phcpy2c?.so is compiled with GNAT Community 2018
0.8.4 : 2018-06-02 : option stable added to mixed_volume_by_demics()
0.8.3 : 2018-05-18 : function mixed_volume_by_demics() in solver.py
0.8.2 : 2018-05-01 : multiplicity calculation added to the solver module
0.8.1 : 2018-04-10 : multitasked homotopy membership test in sets module
0.8.0 : 2018-03-26 : multitasked solve() applies pipelining
0.7.9 : 2018-03-13 : faster solve() in the factor module
0.7.8 : 2018-03-05 : checkin for newton_power_series() functions
0.7.7 : 2017-12-30 : checkin for mixed_volume(), init_cysignals() documented
0.7.6 : 2017-10-17 : bug fixes and other improvements
0.7.5 : 2017-09-28 : reduction of systems added to the solver module
0.7.4 : 2017-09-12 : phcpy prints the root counters output string
0.7.3 : 2017-09-05 : code snippets in Jupyter notebook for SageMath kernel
0.7.2 : 2017-08-20 : added sevenbar to examples, bug fix in store solutions
0.7.1 : 2017-08-13 : numerical irreducible decomposition in factor.solve()
0.7.0 : 2017-07-31 : witness sets defined by Laurent polynomials
0.6.9 : 2017-07-18 : new modules cascades, factor, and diagonal
0.6.8 : 2017-07-05 : improved support for Laurent polynomial systems
0.6.7 : 2017-06-07 : preliminary version of Pade approximant methods
0.6.6 : 2017-05-17 : added tangents to 4 spheres as a use case
0.6.5 : 2017-02-19 : tuned versions of the path trackers with AD 
0.6.4 : 2017-02-07 : algorithmic differentiation trackers in phcpy
0.6.3 : 2017-01-31 : source ready for better integration of ade trackers
0.6.2 : 2017-01-05 : bug fix in series and made ready for import in Sage
0.6.1 : 2016-12-30 : added Littlewood-Richardson tests in examples
0.6.0 : 2016-12-20 : better Newton on power series in the series module
0.5.9 : 2016-11-30 : reorganized chapters in the documentation
0.5.8 : 2016-11-20 : added an example of a power series solution computation
0.5.7 : 2016-10-31 : improved reference manual with restructured text
0.5.6 : 2016-10-16 : compute mixed cell configuration for integer lifting
0.5.5 : 2016-09-20 : checkin parameters for start system constructors
0.5.4 : 2016-08-31 : another use case and reference manual in documentation
0.5.3 : 2016-08-13 : added two use cases to the documentation
0.5.2 : 2016-07-31 : added use case on the circle problem of Appolonius
0.5.1 : 2016-07-22 : fixed makefile for .so files on Mac OS X
0.5.0 : 2016-07-01 : series module to run Newton's method on power series
0.4.9 : 2016-06-15 : improved documentation for the dashboard module
0.4.8 : 2016-06-03 : new module dashboard to prototype GUI with Tkinter
0.4.7 : 2016-05-26 : bug fix in cascade of homotopies
0.4.6 : 2016-05-21 : improved Littlewood-Richardson homotopy interface
0.4.5 : 2016-05-11 : bug fix for stable semi-mixed cells
0.4.4 : 2016-04-30 : function to filter real solutions, better documentation
0.4.3 : 2016-03-25 : improved root refinement for overdetermined systems
0.4.2 : 2016-03-18 : path tracking for overdetermined convex homotopies
0.4.1 : 2016-02-19 : bug fix in parsing ()**2, checkin for solver
0.4.0 : 2016-02-12 : new module tropisms, for output of polyhedral end game
0.3.9 : 2016-01-17 : new tuning module, to tune the settings of the trackers
0.3.8 : 2016-01-02 : version for Python 3.5, improved documentation
0.3.7 : 2015-12-29 : homotopy membership test in sets.py
0.3.6 : 2015-12-24 : monodromy breakup with double doubles and quad doubles
0.3.5 : 2015-12-11 : checkin/checkout functions in polytopes.py
0.3.4 : 2015-11-23 : diagonal homotopies and improved documentation
0.3.3 : 2015-11-06 : new module sweepers exports sweep homotopies
0.3.2 : 2015-10-22 : L-R homotopies with double double and quad doubles
0.3.1 : 2015-10-07 : blackbox solver with double doubles and quad doubles
0.3.0 : 2015-09-24 : bug fix in passing string representations of polynomials
0.2.9 : 2015-08-31 : interface to the path trackers accelerated by GPUs
0.2.8 : 2015-07-31 : added scaling and better documentation for py2c
0.2.7 : 2015-06-26 : faster retrieval of solutions, reproducible runs
0.2.6 : 2015-05-22 : improved documentation
0.2.5 : 2014-11-26 : variable precision Newton steps
0.2.4 : 2014-10-31 : more complete Littlewood-Richardson homotopies
0.2.3 : 2014-09-12 : new module polytopes with convex hulls and mixed volume
0.2.2 : 2014-08-31 : univariate root finders at various level of precision
0.2.1 : 2014-08-10 : deflation in double double and quad double precision
0.2.0 : 2014-07-30 : polyhedral homotopies with double double and quad doubles
0.1.9 : 2014-06-30 : examples directory and random system function
0.1.8 : 2014-06-06 : schubert.py exports Littlewood-Richardson homotopies
0.1.7 : 2014-03-28 : multicore path tracking
0.1.6 : 2013-12-20 : m-homogenization, trackers in separate module
0.1.5 : 2013-12-06 : arbitrary multiprecision Newton and path trackers
0.1.4 : 2013-09-25 : path trackers with generators, bug fix
0.1.3 : 2013-09-19 : references in families, puretopdim option in phcpmaps
0.1.2 : 2013-09-06 : added new module phcmaps
0.1.1 : 2013-08-30 : heeded warnings of pylint
0.1.0 : 2013-08-12 : modules bundled into a package
0.0.9 : 2013-04-25 : updated phcsets.py and new families.py
0.0.8 : 2013-02-15 : deflation and cascade_step
0.0.7 : 2013-02-08 : path trackers in double double and quad double precision
0.0.6 : 2013-01-31 : linear-product root counts & start systems
0.0.5 : 2012-12-30 : plain monodromy factorization in phcsets.py
0.0.4 : 2012-12-21 : first release of schubert.py
0.0.3 : 2012-12-06 : bug fixes and improvements
0.0.2 : 2012-12-02 : regression tests, the new examples.py
0.0.1 : 2012-11-30 : demonstration of Sphinx in MCS 507
