0

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

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 作为变量并且有深入实施,我仍然得到一个错误。

任何人都可以帮助我了解问题所在或如何解决此问题?非常感谢。

4

1 回答 1

0

我没有prune在 NTL 中找到 LLL 函数的参数。但是BKZ有一个。由于两者都接受正整数,因此只是命名混乱。

文档中:

注意:“deep”的使用已经过时,并且已被“弃用”。建议使用 BKZ_FP 来实现更高质量的缩减。
此外,Givens 版本不支持“deep”,
在这种情况下设置 deep != 0 会引发错误。

所以你不能使用G_LLL_XDwithdeep != 0LLL_XD应该可以工作(但它已被弃用)。
但如前所述,您应该考虑使用BKZ_XD而不是LLL_XD. 一个格的 BKZ 基也被 LLL 减少,所以应该没有问题。BKZ 比 LLL 慢,但您可以选择较小的 Blocksize,可能是 10 或 20,但也可以使用 2 或 4,以加快减少速度。

于 2014-07-11T21:48:09.623 回答