0

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.

AbcAeffchen
  • 14,400
  • 15
  • 47
  • 66
SS-Mag
  • 38
  • 5

1 Answers1

0

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.

AbcAeffchen
  • 14,400
  • 15
  • 47
  • 66