【问题标题】:G_LLL_XD function in NTL library faultyNTL 库中的 G_LLL_XD 函数错误
【发布时间】:2014-07-09 20:30:20
【问题描述】:

我正在尝试在 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 作为变量时,我都会收到这个崩溃错误,这是我不应该的,因为该函数不应该寻找深度插入而是寻找 prune,并且当我使用 deep 作为变量并已深入实施,我仍然收到错误。

谁能帮助我了解问题所在或如何解决此问题?非常感谢。

【问题讨论】:

    标签: ntl


    【解决方案1】:

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

    来自documentation

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多