问题标签 [ntl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
73 浏览

c++ - NTL中具有实系数的多项式

有谁知道 NTL 库是否支持具有实数系数的多项式,例如 NTL 类 RR 或 xdouble 或只是常规C++浮点数?

我想对具有实数系数的多项式进行多项式乘法,并且希望是否有一个类“ RR_X”(或类似的东西),例如支持 FFT 多项式乘法的ZZ_XandZZ_pX类。

0 投票
1 回答
236 浏览

c++ - 无法很好地运行 HElib,但它构建在 Windows 10 x64 上

我非常感谢帮助HElib使用 MSVC 2017 编译器在 Windows 10 x64 上工作。我按照本教程成功地使用相同的编译器编译了它的依赖项 NTL并运行了它的测试,所以它似乎运行良好。

但是,在 HElib 的情况下,我尝试使用cmake生成 Visual Studio 项目,然后成功编译它(参见下面的注释),但运行它失败。例如,我运行了Test_binaryCompare.cpp_exe测试(由 cmake 生成了它自己的测试vcproj),但它失败了,因为它到达了我怀疑它应该执行的部分代码(它尝试执行称为引导的操作,并且该测试被禁用)。但是,在 Linux 上它可以工作。

LINUX:我真的想在 Windows 上运行它的原因是因为我发现使用 Visual Studio 进行调试要容易得多。我也更习惯Windows整体..

注意:成功编译 HElib 需要一些修改,例如修复损坏tr1的包含(例如,它试图包含<tr1/memory>而不是仅仅memory尽管后者实际上可用),抑制 4146 错误(我也必须为 NTL 这样做)和修复两个变量实例遗憾的是,Microsoft 的编译器不支持 -length 数组。

0 投票
1 回答
532 浏览

c++ - 错误:没有匹配的函数调用'function namel'

我的最终目标是计算二次理想的幂,它使用 GMP 库在 C 中作为结构变量实现。

我得到了一个库(ANTL),其中包含使用 C++ 模板、命名空间和 NTL 的通用优化指数。该库对 NTL 类型 ZZ_p 等和基本类型(如 long、float 等)进行求幂。

我必须使用 ANTL 库来实现我的最终目标——计算理想的能力,即C 结构变量。因为在我想实现基本 mpz_t 变量的强大功能之前,我从未使用过模板和命名空间,以了解一切是如何工作的。

现在,我有四个头文件 exp.hpp、expbin.hpp、impl.hpp、com.hpp 和一个主文件 exp.cpp,如下所示 -

COM.HPP

EXP.HPP

EXPBIN.HPP

执行HPP

EXP.CPP

当我尝试使用(如 Victor Shoup 的在线 NTL 文档中所述)编译EXP.CPP时

我收到以下错误消息-

对这些错误的刻苦谷歌搜索表明,父类中必须有一个空的构造函数,但我已经有了它。

我知道编译语句是正确的,因为在使用 NTL 时除此之外没有其他方法。在这一点上,我没有解决这个问题的想法。提前致谢。

编辑 这个问题已经解决。我希望关闭或删除这个问题。

0 投票
0 回答
273 浏览

c++ - Mac Xcode 上的数论库 (NTL) - c++ - (Undefined symbols for architecture x86_64) Linker error - Apple Mach-O Linker (ld) Error Group

我在mac上使用了“brew install ntl”。

如果我在 Xcode 中使用 libc++,我会收到以下链接错误:

架构 x86_64 的未定义符号:“_ntl_gcopy(_ntl_gbigint_body*, _ntl_gbigint_body**)”,引用自:NTL::ZZ::operator=(NTL::ZZ&&) in main.o “_ntl_gfree(_ntl_gbigint_body*)”,引用自: NTL::ZZ::Deleter::apply(_ntl_gbigint_body*) in main.o "_ntl_gsadd(_ntl_gbigint_body*, long, _ntl_gbigint_body**)",引用自:NTL::add(NTL::ZZ&, NTL::ZZ const& , long) in main.o "_ntl_gmul(_ntl_gbigint_body*, _ntl_gbigint_body*, _ntl_gbigint_body**)",引用自:NTL::mul(NTL::ZZ&, NTL::ZZ const&, NTL::ZZ const&) in main。 o "NTL::operator<<(std::__1::basic_ostream >&, NTL::ZZ const&)",引用自:main.o 中的 _main"NTL::operator>>(std::__1::basic_istream >&, NTL::ZZ&)",引用自:main.old 中的 _main:未找到架构 x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

如果我切换到 libstdc++,如下所示:GCC 4.7/4.8 作为 Xcode 的 C/C++ 编译器,我会得到 'type_traits' 文件未找到。然而,确实解决了其他链接器错误。

否则如何在 Xcode 中使用 NTL 库?我是否必须添加“其他链接器标志”,如果需要,如何添加以及添加哪些?

NTL 版本 11.1.0

0 投票
1 回答
365 浏览

c++ - 在 NTL 中构造多项式的标准方法是什么?

具体来说,我试图在 Z_p[x] 中以另一个多项式 P 为模构造一个多项式,这需要使用ZZ_pE. 从 NTL 库中,构造函数ZZ_pE

如您所见,您只能ZZ_pE从一个数字(ZZ_plong)或另一个构建 a ZZ_pE。因此,我能够构造的唯一多项式是 0 次。以下代码设置模 p = 100001 和 P = x^4 - 1,并构造ZZ_pEg = 5。

我的目标是做出g我选择的更高次多项式。我该怎么做呢?

一个后续问题是:初始化多项式(例如 in ZZX)的标准(最有效)方法是什么?如果我想构造 f = x^2 - 3x + 4,这是我目前的方法:

即,通过在 for 循环中分别添加多项式的每个项。似乎 NTL 库可以从ZZX([4 -3 1]). 有什么我想念的吗?

0 投票
1 回答
292 浏览

c++ - 如何检查多项式是否与 NTL 可逆?

我已经搜索了几个小时并没有找到答案。我正在使用多项式模另一个多项式(所以ZZ_pE对象)。当我使用 methodinv(ZZ_pE poly)时,结果要么是相反的(如果存在),要么是以下错误消息:

我尝试使用 try/catch:

但错误消息仍然会停止程序。据我所知,没有isInvertible或类似的方法。如何检查多项式是否可逆?

0 投票
1 回答
434 浏览

build - 如何使用“-fPIC”标志重新编译 ntl 和 gmp 库并将 HELib 设为共享库以及对 func(std::ostream&) 错误的未定义引用

nm -CD /usr/local/lib libfhe.so 的映像

内置到 HELib 共享库中的 C++ 代码使用 NTL 和 GMP 静态库。但它得到以下错误:

/usr/bin/ld: /usr/local/lib/libntl.a(FFT.o): 重定位 R_X86_64_32 反对 `.rodata.str1.8' 在制作共享对象时不能使用;使用 -fPIC
/usr/local/lib/libntl.a 重新编译:错误添加符号:错误值 collect2:错误:ld 返回 1 退出状态

在帖子中建议单击此处

使用“-fPIC”标志重新编译 NTL 和 GMP。我无法找到我应该如何做到这一点。

编辑:

我现在可以构建共享库了:重新编译 GMP 和 NTL: ./configure --enable-shared
for gmp 和 ./configure SHARED=on

在安装 HELib 之后。运行示例代码时出现错误。Makefile的链接:点击查看makefile

错误:

g++ -g -O2 -std=c++11 -pthread -DFHE_THREADS -DFHE_BOOT_THREADS -DFHE_DCRT_THREADS -o Test_General_x Test_General.cpp -L/usr/local/lib -lntl -lgmp -lm -lfhe /usr/local/lib/libfhe .so:未定义对write_raw_int(std::ostream&, long, long)' /usr/local/lib/libfhe.so: undefined reference toread_raw_ZZ(std::istream&, NTL::ZZ&)' /usr/local/lib/libfhe.so 的引用:未定义对void write_raw_vector<long>(std::ostream&, std::vector<long, std::allocator<long> > const&)' /usr/local/lib/libfhe.so: undefined reference towriteEyeCatcher(std::ostream&, char const*)' /usr/local/ 的引用lib/libfhe.so: 未定义对write_raw_xdouble(std::ostream&, NTL::xdouble)' /usr/local/lib/libfhe.so: undefined reference toread_ntl_vec_long(std::istream&, NTL::Vec&)' 的引用 /usr/local/lib/libfhe.so: 未定义对void read_raw_vector<long>(std::istream&, std::vector<long, std::allocator<long> >&)' /usr/local/lib/libfhe.so: undefined reference toreadEyeCatcher(std::istream&, char const*)' /usr 的引用/local/lib/libfhe.so:未定义对read_raw_int(std::istream&, long)' /usr/local/lib/libfhe.so: undefined reference toread_raw_xdouble(std::istream&)' 的引用 /usr/local/lib/libfhe.so:未定义引用write_raw_ZZ(std::ostream&, NTL::ZZ const&)' /usr/local/lib/libfhe.so: undefined reference towrite_ntl_vec_long(std::ostream&, NTL::Vec const&, long)' collect2: error: ld returned 1 exit status Makefile:179: recipe for target 'Test_General_x' failed make: *** [Test_General_x] Error 1

0 投票
1 回答
323 浏览

c++ - NTL 库 GF2X

我正在使用 NTL 库试验伽罗瓦场。GF2是整数 mod 2,GF2X是多项式,GF2并且GF2E是环/域扩展GF2

我面临的问题是我初始化不可约多项式如下

然后我还初始化了两个多项式:

并将它们相乘:

输出是deg(a * b): 248,它在 的域/环之外2^128,由不可约多项式定义。

我知道我可能遗漏了一些明显的东西,但我对这个领域很陌生,所以请耐心等待。

谢谢!

0 投票
0 回答
103 浏览

c++ - c++ 运算符重载:ZZ_pX 向量的 NTL 库导出/导入

我正在尝试从 ZZ_pX 类型导出和导入 NTL 向量。阅读源代码后,我发现了这个有趣的运算符函数:

然后我写了这个用于导出的代码:

对于导入,我尝试做这样的事情:

导出正常,但导入不正常,错误:

对不起,如果这很简单,因为我对 C++ 很陌生

0 投票
0 回答
77 浏览

c++ - 在类中初始化 NTL 向量时出错

在我的代码中,我使用了许多 NTL 向量和矩阵作为类成员。大多数变量可以初始化为零长度向量或矩阵。但是最后一个(randE),它以某种方式默认为大小= 4444736032并固定的向量。

我试图在构造函数中添加初始化,它会抛出一个错误,由于向量是固定的,它不能改变它的长度。