Hi Dave,
Thanks for your prompt reply. I won't be at ISSAC.
You can download current version of our library there:
http://benoitlacelle.fr/files/SLA_090722.zip
To be used, it needs the last version of NTL.
We focused on the resolution of systems and the inversion of matrices
in the fields K=Z/pZ and K[X].
here is a quick overview of current architecture:
About file:
files like "c*.hpp" define classes
files like "tools_*.hpp" defines helping functions
most algorithms are in "invers*.hpp"
files like "NTL_*.hpp" and "proxy_NTL_*.hpp" make the bridge with
the NTL
Main classes:
IStructured.hpp : Abstract class for structured matrices (defined
by generators)
cStructured.hpp : templated class for structured matrices where
generators are defined by two matrices
cKaltofen.hpp : templated class for structured matrices where
generators are defined by two vectors of polynomials
cPolynom.hpp : defines the templated class cRichPolynom: represent
a polynomial by both a dense representation and a FFT representation
Main algorithms:
inverse_MBA.hpp: Implementation of the MBA algorithm, works on
cKaltofen
inverse_quadratic.hpp: Quadratic algorithms for the resolution and
inversion of matrices, works on cStructured
inverse_polynomial.hpp: Implementation of a Structured Newton's
Iteration. Works on cStructured
reduction.hpp: reduce the number of generators defining a
structured matrix, Works on IStructured
tools_generators: convert generators between displacement operators
tools_multiply.hpp: all multiplications for the case K = Z/pZ and
the displacement operator is phi+ or phi-
mul_matrix_vector.hpp: some multiplications for the case K = Z/pZ
and K[X] and the displacement operator is a sylvestor operator.
We tried to put some genericity in our library through templates. But
some features are really dependant on the way NTL works. On the whole,
we expect objects with the same interface as NTL ones. We represent
the hierarchy of math objects (Field (K) -> PolynomialField (K[X]))
through templated typedefs (td_polynom in cPolynom.hpp, td_matrix in
cMatrix.hpp).
About a possible integration, (very big) changes will have to be done
about the classes representing structured matrices. We will have time
to discuss about that but current architecture is nothing but "good
enough for current state of affairs". Main points being "how should I
have access to the generators?" and "how should I have the knowledge
about the displacement operator?". Of course, I am open to remarks and
advice, mainly about the general architecture.
Benoit