Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time
Changes in fplll-5.0:
- switched to C++11
- switched to more open development model on GitHub, cf.
- support for computing optimal pruning parameters for a given lattice
- BKZ 2.0: recursive BKZ preprocessing, extreme pruning, gaussian
heuristic bound
- precomputed BKZ (2.0) reduction strategies up to block size 90, cf.
- Self-Dual BKZ and Slide reduction
- faster, recursive enumeration implementation
- Gaussian lattice sieving
- Python interface at
- optional dumping Gram-Schmidt vectors during execution of algorithm
- q-ary lattice generator
- instructions on how to cite
- optional support for doubledouble and quaddouble
- pkg-config support
- API documentation at
- revised build system supporting parallel build
- copyright headers
- dropped fplllv3 compatibility layer
- greatly increased test coverage, tests are run on every commit or
pull request
- coding/naming convention
- FP API improved to allow for more readable/natural code
Changes in fplll-4.0.4:
- compatibility for packages that still expect to build against
libfplll version 3.
- updates of config.sub and config.guess
- better check that MPFR and GMP are installed
- compilation issue with NaN's
Changes in fplll-4.0.3:
- Compiler issues with Cygwin
Changes in fplll-4.0.2:
- Changed formulation for the license, in README.html
Main changes in fplll-4.0.1:
- Compiler warnings about unused parameters fixed
Main changes in fplll-4.0.0:
- BKZ reduction, available with 'fplll -a bkz -b block_size'
Changes in fplll-3.1.3:
- Fixed build process when DESTDIR is defined
Changes in fplll-3.1.2:
- Memory leak fixed in the wrapper.
Main changes in fplll-3.1.1:
- Some code is no longer included in the header files but is compiled in
libfplll instead. The -lfplll option will now be required for apps which could
be compiled without it.
- 'make install' puts all header files but fplll.h in a subdirectory named fplll
- New programming interface for the library (documented in README.html).
- 'generate' renamed to 'latticegen'.
- Removal of fplll_verbose. Use the '-v' option instead.
- Minor bugs fixed in all versions of LLL.
- More important bugs fixed in the SVP solver.
- Optimization of the SVP solver.
- By default, 'fplll -a svp' now gives the coordinates of a shortest vector in
the _standard_ basis.
The main differences between fplll-2.1 and fplll-3.0 are the following:
- short lattice vector enumeration algorithm (by Xavier Pujol).
- GPL -> LGPLv2
- no more need to specify the number of rows and columns in the input
of the fplll binary.
- new version of dpe.h [Patrick Pelissier and Paul Zimmermann]
The main differences between fplll-2.1 and fplll-2.0 are the following:
- "configure/make/make install" packaging (thanks to Martin Albrecht)
- few minor changes to make fplll portable to SAGE (thanks to Martin
- conversion scripts between MAGMA and fplll formats.
- a bug fixed in fast_early (discovered by Martin Albrecht)
fplll-2.0 is an improved version of fplll-1.3. Parts of it resemble
Magma's LLL (Allan Steel, Damien Stehle) and/or NTL's LLL (Victor
The improvements from fplll-1.3 to fplll-2.0 were mostly performed
by David Cade. Here is a brief summary of the changes:
- the major algorithmic improvement is the so-called wrapper, which
chooses for the user a guess of the right sequence of heuristic/proved
variants to use, in order to finish as quick as possible, but in a
reliable way.
- the early-reduction strategy of Allan Steel has been integrated. It
consists in size-reducing vectors earlier than what would have been
done in the standard LLL. This is not integrated into the wrapper yet.
- we switched from C to C++, to simplify our lives with the wrapper.
It is extremely convenient for the use of the underlying arrithmetics
(integers and floating-point numbers).
- we translated the matrix indices by 1: the first matrix entry is
B[0][0] instead of B[1][1].
- automatised triangular option: the code looks at the matrix and
decides how close to upper-triangular it is.