我正在学习使用NTL库,特别是以后的LLL算法。有人知道NTL库中LLL函数的用法吗?提前谢谢。
最佳答案
从“文档”中:
long
[G_]LLL_{FP,QP,XD,RR} (mat_ZZ& B, [ mat_ZZ& U, ] double delta = 0.99,
long deep = 0, LLLCheckFct check = 0, long verbose = 0);
您可以通过调用。
LLL_FP(B)
后缀
FP
表示精度,因为计算是用浮点运算完成的。这样做是为了加速LLL算法。如果需要更好的prezision,可以选择其他后缀之一QP
、XD
或RR
。注意
B
必须是ZZ
类型的矩阵。NTL使用矩阵的行作为晶格的基础。(我遇到了这个问题,因为C.P.Schnorr教授把点阵基写成列)在归纳之后,LLL减少基覆盖输入矩阵
B
。如果您需要转换矩阵,它可以进行简化,您可以调用LLL_FP(B, U)
我希望这能有帮助。