Ada source code of Polynomial Homotopy Continuation version 2.4.90

The same hierarchical structure as in the original version is preserved,
with the addition of numerical Schubert calculus in release 2,
and the Components, Differentials, and CtoPHC library in release 2.1.
In release 2.2, Components was extended with diagonal homotopies,
improved with intrinsic coordinates in release 2.3 and Solver was added.
A modified Newton's method developed in collaboration with Anton Leykin
and Ailing Zhao justified a new directory "Newton" in release 2.3.
Translation of Algorithm 846 with the help of Yan Zhuang led to a new
directory MixedVol, released in v2.3.13.  Since v2.3.27, deflation is
applied to the singularities found by the blackbox solver.
Support for stable mixed volumes was provided in release 2.3.31.
In release 2.3.43, the directory "Fewnomials" was renamed to "Simpomials"
and the directory Puiseux was added.  Multitasking was introduced in
release 2.3.45, developed in the directory Tasking.  Collaboration with
Genady Yoffe led to the new QD library in Math_Lib, new in v2.3.55.
Version 2.3.68 has a new solver for general binomial systems, based on
algorithms developed jointly with Danko Adrovic, updated for affine
solution sets in release 2.3.70.  The Math_Lib was restructured in v2.3.71.
Differentials was removed in release 2.3.75, and the Deformations directory
houses the Homotopy, Newton, and Continuation directories.
Release 2.3.84 offers path trackers with generators for use in phcpy.
Variable precision Newton's method was introduced in version 2.3.96.
The GPU acceleration of the path trackers was introduced in 2.4.
Version 2.4.06 offered pipelined polyhedral trackers in phc -m.
Since version 2.4.13, phc -p can track paths in overdetermined homotopies.
The directory Series was added in version 2.4.21 to define the power
series arithmetic for use in phc -u to compute power series solutions.
DEMiCs for dynamic enumeration to compute all mixed cells was added
in version 2.4.53.  The directory AD was added to Math_Lib in 2.4.63.
Version 2.4.76 provided multitasked Newton-Fabry-Pade-Hesse trackers.
Multiple double arithmetic with code generated by the CAMPARY software
was introduced in v2.4.80 extending the Math_Lib/QD folder.
The Laurent folder was added to the mathematical library in v2.4.85 and
in CtoPHC, code was redistributed into new folders Types and Structures.
Version 2.4.85 added .gpr files to build with gprbuild.
An alire workspace is provided in version 2.4.88.

The Ada sources are organized in a tree of directories:

 Ada                       : Ada source code of PHC
  |-- System               : 0. OS dependencies, e.g.: timing package
  |-- Math_Lib             : 1. general mathematical library
  |      |-- Numbers       : 1.1. number representations
  |      |-- QD            : 1.2. multiple double arithmetic
  |      |-- Vectors       : 1.3. vectors and vectors of vectors
  |      |-- Matrices      : 1.4. matrices and linear-system solvers
  |      |-- Divisors      : 1.5. common divisors, integer linear algebra
  |      |-- Reduction     : 1.6. row reduction, numerical linear algebra
  |      |-- Polynomials   : 1.7. multivariate polynomial systems
  |      |-- Functions     : 1.8. evaluation and differentiation
  |      |-- Supports      : 1.9. support sets and linear programming
  |      |-- Circuits      : 1.A. circuits for algorithmic differentation
  |      |-- Series        : 1.B. manipulating truncated series
  |      |-- Laurent       : 1.C. series with integer leading exponents
  |      |-- AD            : 1.D. algorithmic differentiation of Path library
  |-- Deformations         : 2. homotopies, Newton's method & path trackers
  |      |-- Solutions     : 2.1. solutions of systems and homotopies
  |      |-- Homotopy      : 2.2. homotopies, scaling and reduction
  |      |-- Newton        : 2.3. root refining and modified Newton's method
  |      |-- Curves        : 2.4. univariate solving & plane algebraic curves
  |      |-- End_Games     : 2.5. extrapolation end games with Puiseux series
  |      |-- Trackers      : 2.6. path-tracking routines
  |      |-- Sweep         : 2.7. sweeping for singularities
  |      |-- Continuation  : 2.8. drivers and data management
  |-- Root_Counts          : 3. root counts and homotopy construction
  |      |-- Product       : 3.1. linear-product start systems
  |      |-- Binomials     : 3.2. solvers for binomial and simplicial systems
  |      |-- Implift       : 3.3. implicit lifting
  |      |-- Stalift       : 3.4. static lifting
  |      |-- Dynlift       : 3.5. dynamic lifting
  |      |-- Symmetry      : 3.6. exploitation of symmetry relations
  |      |-- MixedVol      : 3.7. translation of ACM TOMS Algorithm 846
  |      |-- DEMiCs        : 3.8. interface to the DEMiCs program
  |      |-- Puiseux       : 3.9. Puiseux series for curves
  |-- Schubert             : 4. numerical Schubert calculus
  |      |-- SAGBI         : 4.1. SAGBI homotopies
  |      |-- Pieri         : 4.2. deformations based on Pieri's rule
  |      |-- Induction     : 4.3. Schubert induction
  |-- Components           : 5. numerical irreducible decomposition
  |      |-- Samplers      : 5.1. computing witness points
  |      |-- Interpolators : 5.2. finding equations for components
  |      |-- Factorization : 5.3. factorization into irreducible components
  |      |-- Decomposition : 5.4. sequence of homotopies to filter and factor
  |      |-- Solver        : 5.5. incremental equation by equation solver
  |      |-- Tropical      : 5.6. tropical view on witness sets
  |-- CtoPHC               : 6. interface from C to phc
  |      |-- Types         : 6.1. C types equivalent to Ada
  |      |-- Structures    : 6.2. system and solution wrappers
  |      |-- Funky         : 6.3. functional interface, C -> Ada -> C 
  |      |-- State         : 6.4. state machine gateway, C <-> Ada
  |-- PHCtoC               : 7. GPU acceleration via a C interface
  |-- Tasking              : 8. multitasking
  |-- Main                 : 9. the main programs

To create the executable version, do cd ../Objects and type make phc.

The heart of the package still resides in the libraries Homotopy and
Continuation, which gather the capabilities to set up polynomial homotopies
and perform path tracking.  Release 2 featured a new mathematical library,
rebuilt using Ada 95 concepts and offering multi-precision arithmetic.

Polynomial Homotopy Continuation is a symbolic-numeric method:
root counting is a symbolic action for the resolution of a start system,
whereas path-following has Newton's method as main computational engine.
