An NTT-based Fast Lattice library
NFLlib is an efficient and open-source C++ library dedicated to ideal lattice cryptography. It is specialized in polynomial rings quotiented by a cyclotomic polynomial whose degree is a power of two. The library combines algorithmic optimizations (Chinese Remainder Theorem, optimized Number Theoretic Transform) together with programming optimization techniques (SSE and AVX2 specializations, C++ expression templates, etc.).
You need cmake, GMP and Mpfr, as well as a C++11 compiler to build NFLLib.
To build, test and install a production version of nfllib, run the following:
$> mkdir _build $> cd _build $> cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/nfllib $> make $> make test $> make install
The following CMake options are relevant:
||Where the library is installed|
||The basic compiler configuration|
||Enable SSE/AVX-based optimization|
To use SSE-based optimizations, compile the code with the flags
To use AVX-based optimizations, compile the code with the flags
In order to get the documentation you need Sphinx and the Alabaster theme. Installation procedures are described at (we recommend using pip for both installations) :
After getting both Sphinx and the Alabaster theme build the documentation and show it with:
$> sphinx-build . build $> your_favorite_browser build/nfl.html
If you have issues building the documentation please contact the developper team.