249{
253 C.init(a);
254 C.init(b);
255 C.init(c);
256 C.init(d);
257 mpz_t gmp1;
258 mpz_init(gmp1);
259 for (
int i = 0; i <
ntrials; i++)
260 {
261 gen.nextElement(a);
262
263
264 C.power(b, a, 1);
265 EXPECT_TRUE(C.is_equal(b, a));
266
269 C.power(b, a, e1);
270 C.power(c, a, e2);
271 C.power(d, a, e1 + e2);
272 C.mult(c, b, c);
274
275
276
277
278 mpz_set_si(gmp1, e1);
279 C.power_mpz(d, a, gmp1);
280 EXPECT_TRUE(C.is_equal(d, b));
281 }
282 mpz_clear(gmp1);
283 C.clear(d);
284 C.clear(c);
285 C.clear(b);
286 C.clear(a);
287}
bool almostEqual(const M2::ARingCCC &C, int nbits, const M2::ARingCCC::ElementType &a, const M2::ARingCCC::ElementType &b)
aring-style adapter for arbitrary-precision complex numbers, stored as (MPFR, MPFR) pairs.
int32_t rawRandomInt(int32_t max)