在 NTL 中构造多项式的标准方法是什么?
What is the standard way to construct a polynomial in NTL?
具体来说,我正在尝试用Z_p[x]模构造一个多项式另一个多项式P,这需要使用ZZ_pE
。在 NTL 库中,ZZ_pE
的构造函数是
ZZ_pE(); // initial value 0
ZZ_pE(const ZZ_pE& a); // copy constructor
explicit ZZ_pE(const ZZ_p& a); // promotion
explicit ZZ_pE(long a); // promotion
ZZ_pE& operator=(const ZZ_pE& a); // assignment
ZZ_pE& operator=(const ZZ_p& a); // assignment
ZZ_pE& operator=(long a); // assignment
如您所见,您只能从一个数字(ZZ_p
或long
(或另一个ZZ_pE
构造一个ZZ_pE
。因此,我能够构造的唯一多项式是 0 次。以下代码设置模 p = 100001 和 P = x^4 - 1,并构造一个ZZ_pE
g = 5。
// Declare polynomial and coefficient moduli
ZZ_p::init(ZZ(100001));
ZZ_pX cyclo = ZZ_pX(INIT_MONO, 4) - 1;
ZZ_pE::init(cyclo);
// Construct g
ZZ_pE g = ZZ_pE(5);
我的目标是使g
成为我选择的高次多项式。我该怎么做?
后续问题是:初始化多项式的标准(最有效(方法是什么(例如,在ZZX
中(?如果我想构造 f = x^2 - 3x + 4,这是我目前的方法:
ZZ list[3] ={ZZ(4), ZZ(-3), ZZ(1)};
ZZX f;
for(int i=0; i<4; i++)
f += ZZX(INIT_MONO, i, list[i]);
即,通过在 for 循环中分别添加多项式的每个项。似乎 NTL 库可以从像ZZX([4 -3 1])
这样的构造函数中受益。我错过了什么吗?
对于ZZX
,官方方法是单独设置每个系数。 为此,有功能
void SetCoeff(ZZX& x, long i, const ZZ& a)
有关更多详细信息,请参阅 http://www.shoup.net/ntl/doc/ZZX.cpp.html。
我不确定这是否也适用于ZZ_pX
.
相关文章:
- 没有取消引用/解包对象的标准方法?
- 是否有一种标准方法来计算两个 asctime() 值之间的天数
- 导入模块的标准方法
- 有没有一种标准方法可以在C++中获取第 n 个"下一个"浮点值
- C++ 捕获异常后进行清理的标准方法是什么?
- memcpy 是将浮子打包到 uint32 中的标准方法吗?
- 读取二进制文件的惯用C++17标准方法是什么
- 在 c++ 中创建 dll 并在 delphi 中调用的标准方法
- 在 NTL 中构造多项式的标准方法是什么?
- C 是否具有对两个STD :: sets,vectors等进行三角比较的标准方法
- 获取非专用标准::矢量容器的标准方法<bool>
- 将结构传递到头文件的标准方法
- C 11中的标准方法是什么,可以访问std :: vector中元素n的指针
- 组合来自多个线程的数据的标准方法?
- 标准::字符串::空的未定义符号错误;Mac OS High Sierra 上的 c++ 标准方法链接错误
- 在C++中初始化布尔向量的标准方法是什么
- 在C 中对二进制对象进行编码/解码的标准方法
- 有没有一种标准方法来确保一段代码在全局范围内执行
- 处理对存储在私有映射中的值的封装访问的标准方法,而不破坏C++中的抽象
- 是否有一种替换C风格的Bool数组的标准方法