本文整理汇总了C++中bigint::get_mpz_t方法的典型用法代码示例。如果您正苦于以下问题:C++ bigint::get_mpz_t方法的具体用法?C++ bigint::get_mpz_t怎么用?C++ bigint::get_mpz_t使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bigint
的用法示例。
在下文中一共展示了bigint::get_mpz_t方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convert_destroy
void modp::convert_destroy(bigint& xx,
const Zp_Data& ZpD)
{
xx %= ZpD.pr;
if (xx<0) { xx+=ZpD.pr; }
//mpz_mod(xx.get_mpz_t(),x.get_mpz_t(),ZpD.pr.get_mpz_t());
inline_mpn_zero(x, ZpD.t);
inline_mpn_copyi(x, xx.get_mpz_t()->_mp_d, xx.get_mpz_t()->_mp_size);
if (ZpD.montgomery)
ZpD.Mont_Mult(x, x, ZpD.R2);
}
示例2: get_bigint
void PRNG::get_bigint(bigint& res, int n_bits, bool positive)
{
int n_bytes = (n_bits + 7) / 8;
if (n_bytes > 1000)
throw not_implemented();
octet bytes[1000];
get_octets(bytes, n_bytes);
octet mask = (1 << (n_bits % 8)) - 1;
bytes[0] &= mask;
bigintFromBytes(res, bytes, n_bytes);
if (not positive and (get_bit()))
mpz_neg(res.get_mpz_t(), res.get_mpz_t());
}
示例3: randomBnd
void PRNG::randomBnd(bigint& x, const bigint& B, bool positive)
{
int i = 0;
do
{
get_bigint(x, numBits(B), true);
if (i++ > 1000)
{
cout << x << " - " << B << " = " << x - B << endl;
throw runtime_error("bounded randomness error");
}
}
while (x >= B);
if (!positive)
{
if (get_bit())
mpz_neg(x.get_mpz_t(), x.get_mpz_t());
}
}
示例4: to_bigint
void to_bigint(bigint& ans,const modp& x,const Zp_Data& ZpD,bool reduce)
{
mpz_ptr a = ans.get_mpz_t();
if (a->_mp_alloc < ZpD.t)
mpz_realloc(a, ZpD.t);
if (ZpD.montgomery)
{ mp_limb_t one[MAX_MOD_SZ];
inline_mpn_zero(one,MAX_MOD_SZ);
one[0]=1;
ZpD.Mont_Mult(a->_mp_d,x.x,one);
}
else
{ inline_mpn_copyi(a->_mp_d,x.x,ZpD.t); }
a->_mp_size=ZpD.t;
if (reduce)
while (a->_mp_size>=1 && (a->_mp_d)[a->_mp_size-1]==0)
{ a->_mp_size--; }
}