NTL库中的G_LLL_XD函数有问题

时间:2014-07-09 20:30:20

标签: ntl

我正在尝试在NTL库上使用G_LLL_XD函数。每当我以这种格式使用函数时:

G_LLL_XD(B, delta); , 

该计划有效。 但是,当我想更改默认的深度或修剪变量并以下列方式之一编写函数时:

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

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

在运行时,我收到此错误:

R610
- abort() has been called

并在命令提示符中显示:

"sorry...deep insertions not implemented"

我发现这很奇怪,因为每当我使用prune作为变量时,我都会遇到此崩溃错误,我不应该因为函数不应该寻找深度插入而是修剪,当我使用deep作为变量时变量并已深入实现,我仍然会收到错误。

有人可以帮我理解问题是什么或我如何解决这个问题?非常感谢你。

1 个答案:

答案 0 :(得分:0)

我没有在NTL中找到LLL函数的参数prune。但是BKZ还有一个。由于这两者都是接受正面的意外,它只是一个命名混乱。

来自documentation

  

注意:使用" deep"已经过时了,已经被弃用了#34;它是   建议使用BKZ_FP来实现更高质量的降低   此外,Givens版本不支持" deep"和设置
  deep!= 0会在这种情况下引发错误。

因此您无法将G_LLL_XDdeep != 0一起使用,但LLL_XD应该有效(但已弃用)。 但如上所述,您应该考虑使用BKZ_XD而不是LLL_XD。 晶格的BKZ基础也减少了LLL,因此应该没有问题。 BKZ比LLL慢,但你可以选择一个小块大小,可能是10或20,但也可以选择2或4,以加快减速。