ntl

G_LLL_XD function in NTL library faulty


I am trying to use the G_LLL_XD function on the NTL library. Whenever I use the function in this format:

G_LLL_XD(B, delta); , 

the program works. Though, when I want to change the default deep or prune variables and write the function in one of these ways:

G_LLL_XD(B, delta, deep, check, verbose);

G_LLL_XD(B, delta, prune, check, verbose); 

during runtime, I get this error:

R610
- abort() has been called

and in the command prompt it says:

"sorry...deep insertions not implemented"

I find this very weird since whenever I use prune as a variable, I get this crash error, which I shouldn't because the function shouldn't be looking for deep insertion but prune, and when I do use deep as a variable and have implemented deep, I still get an error.

Can anybody help me understand what the problem is or how I can fix this? Thank you very much.


Solution

  • I dont found a argument prune for LLL function in NTL. But there is one for BKZ. Since the are both accept positive intergers, its only a naming confusion.

    From the documentation:

    NOTE: use of "deep" is obsolete, and has been "deprecated". It is recommended to use BKZ_FP to achieve higher-quality reductions.
    Moreover, the Givens versions do not support "deep", and setting
    deep != 0 will raise an error in this case.

    So you can not use G_LLL_XD with deep != 0 but LLL_XD should work (but it is deprecated).
    But as mentioned, you should consider using BKZ_XD instead of LLL_XD. A BKZ basis of a lattice is also LLL reduced, so there should be no problem. BKZ is slower than LLL but you can choose a small Blocksize, maybe 10 or 20 but also 2 or 4 will work, to speed the reduction up.