We are pleased to present FLINT version 2.2.
It is available for download at our website (http://www.flintlib.org/):
Documentation: http://www.flintlib.org/flint-2.2.pdf (165 pp.)
Contributors: Fredrik Johansson, Sebastian Pancratz, William Hart,
with bug reports by Serge Torres.
For those after the benchmarketing figures, please see:
My personal favourite is determinant of a 10x10 matrix with random
rational coefficients of 100 bits:
Sage / flint2
11 mins 50 s 4.2 milliseconds
This release contains some fantastic new modules:
fmpq -- multiple precision rational numbers
fmpq_mat -- matrices over QQ
fmpz_poly_mat -- matrices over Z[x], i.e. polynomial matrices
fmpz_poly_q -- rational functions over Q (quotients of integer polynomials)
padic -- padic numbers
Although they are already fairly developed modules, they are still
considered under development (especially the padic module). Some
interface changes are still possible in the future.
There have also been numerous new functions and improvements made in
the fmpz_mat, longlong, nmod_mat, arith, fmpz, fmpz_vec, fmpz_poly,
nmod_poly and mpn_extras modules and some build fixes.
Full details can be found at the bottom of the NEWS file:
The following functionality from flint 1.5 is yet to be ported to the
flint 2.x series:
nmod_poly_gcd_hgcd -- asymptotically fast gcd
nmod_poly_factor_berlekamp -- Z/nZ[x] factorisation
nmod_poly_factor_cantor_zassenhaus -- Z/nZ[x] factorisation
fmpz_poly_mul_SS -- fast Z[x] multiplication for large coefficients
and medium to large lengths
some FFT precaching and middle product functions for
nmod_poly_div_newton -- faster Z/nZ[x] division
It is expected that this functionality will be completed over the next
2-3 flint releases.
The FLINT Team.
And the documentation is 184 pp. (not 164 pp. as reported).
On Fri, 10 Jun 2011 09:27:47 +0100
Martin Albrecht <martinr...@googlemail.com> wrote:
> I'm wondering whether we should do a Sage-FLINT days thingy/coding
> sprint (either somewhere in the big blue room or online) to make use
> of all the cool new features in FLINT 2.x?
> Or should we wait until everything from 1.5 are in 2.x?
We could do it gradually if it was possible to install the two side by
side. Since the API changed drastically and 2.x will not provide all
the bells and whistles of 1.x in the near future (by fast-paced full
of impatience Sage measures), this makes perfect sense.
Could anybody modify the build system so we can use both of these
Do you mean the build system of flint or of Sage? If the former then I
think the only thing I can think of is to rename libflint.so to
libflint2.so. This is easy to do of course. Simply change the relevant
line in Makefile.in and reconfigure.
I believe the only name clashes should be between fmpz and fmpz_poly
between the two flints. One library order should give you flint 1.5
fmpz access, the other library order should give the other fmpz.
Note that in order to get all the features of flint 1.5 into flint2 we
need the new FFT which I started writing nearly 1.5 years ago. This
will be going into MPIR, the next release for which is scheduled in
early September. How is Sage doing with keeping up with the MPIR
releases? I haven't been keeping track lately. flint2 needs a pretty
recent release of MPIR and similarly for mpfr.
I assume Sage did not upgrade to flint 1.6. This is a good thing as it
will be a very long time before we are able to cover factorisation of
polynomials over the integers in flint2. It'll be worth waiting for
Of course all the new fmpq_poly and fmpz_poly_mat stuff relies on the
new fmpz_poly stuff and fmpz_mat on fmpz and fmpq on fmpz, and
fmpq_mat on fmpq, and arith on fmpz etc. So you may have disable some
(most) modules in flint2 until you are using the new fmpz and
fmpz_poly. This can be done by removing the names of the modules that
you want to disable from the last line of Makefile.in. At the moment
fmpz_poly relies only on fmpz, fmpz_vec, nmod_vec, nmod_poly and
ulong_extras. The test code may also rely on long_extras as well. So
this is probably a good set of initial modules to enable in flint2,
with the only conflicts with flint1.5 being in the fmpz and fmpz_poly