|
|
@ -47,6 +47,7 @@ struct Operator : E { |
|
|
|
y.getBlock(b); |
|
|
|
y.getBlock(b); |
|
|
|
powArray(z, x, b.p, b.n, false, false); |
|
|
|
powArray(z, x, b.p, b.n, false, false); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// @note time is depend on bitlength of y
|
|
|
|
template<class tag2, size_t maxBitSize2, template<class _tag, size_t _maxBitSize> class FpT> |
|
|
|
template<class tag2, size_t maxBitSize2, template<class _tag, size_t _maxBitSize> class FpT> |
|
|
|
static void powCT(T& z, const T& x, const FpT<tag2, maxBitSize2>& y) |
|
|
|
static void powCT(T& z, const T& x, const FpT<tag2, maxBitSize2>& y) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -63,6 +64,7 @@ struct Operator : E { |
|
|
|
{ |
|
|
|
{ |
|
|
|
powArray(z, x, gmp::getUnit(y), abs(y.get_mpz_t()->_mp_size), y < 0, false); |
|
|
|
powArray(z, x, gmp::getUnit(y), abs(y.get_mpz_t()->_mp_size), y < 0, false); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// @note time is depend on bitlength of y
|
|
|
|
static void powCT(T& z, const T& x, const mpz_class& y) |
|
|
|
static void powCT(T& z, const T& x, const mpz_class& y) |
|
|
|
{ |
|
|
|
{ |
|
|
|
powArray(z, x, gmp::getUnit(y), abs(y.get_mpz_t()->_mp_size), y < 0, true); |
|
|
|
powArray(z, x, gmp::getUnit(y), abs(y.get_mpz_t()->_mp_size), y < 0, true); |
|
|
|