Macaulay2 Engine
Loading...
Searching...
No Matches

◆ TEST() [5/14]

TEST ( RingZZ ,
gcd  )

Definition at line 143 of file RingZZTest.cpp.

144{
146 const RingZZ* R = globalZZ;
147
149 for (int i = 0; i < ntrials; i++)
150 {
151 ring_elem a = gen.nextElement();
152 ring_elem b = gen.nextElement();
153
154 // (a // gcd(a,b) == 0, b // gcd(a,b) == 0,
155 ring_elem c = R->gcd(a, b);
156 ring_elem u, v;
157 ring_elem d = R->gcd_extended(a, b, u, v);
158
159 EXPECT_TRUE(globalZZ->is_positive(c));
160
161 EXPECT_TRUE(R->is_equal(c, d));
162 EXPECT_TRUE(R->is_equal(c, R->add(R->mult(a, u), R->mult(b, v))));
163 EXPECT_TRUE(R->is_equal(a, R->mult(R->divide(a, c), c)));
164 }
165
166 EXPECT_TRUE(R->is_equal(R->zero(), R->gcd(R->zero(), R->zero())));
167 EXPECT_TRUE(R->is_equal(R->one(), R->gcd(R->one(), R->minus_one())));
168 EXPECT_TRUE(R->is_equal(R->one(), R->gcd(R->minus_one(), R->minus_one())));
169}
const int ntrials
Definition ARingTest.hpp:42
void testRingGCD(const T *R, int ntrials)
Definition RingTest.hpp:229
ring_elem one() const
Definition ring.hpp:357
ring_elem zero() const
Definition ring.hpp:359
ring_elem minus_one() const
Definition ring.hpp:358
virtual ring_elem add(const ring_elem f, const ring_elem g) const
Definition ZZ.cpp:251
virtual ring_elem divide(const ring_elem f, const ring_elem g) const
Definition ZZ.cpp:304
ring_elem gcd(const ring_elem f, const ring_elem g) const
Definition ZZ.cpp:361
virtual bool is_equal(const ring_elem f, const ring_elem g) const
Definition ZZ.cpp:161
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
Definition ZZ.cpp:267
ring_elem gcd_extended(const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
Definition ZZ.cpp:369
Engine-side ring of integers, backed by GMP mpz_ptr elements.
Definition ZZ.hpp:77
RingZZ * globalZZ
Definition relem.cpp:13

References RingZZ::add(), RingZZ::divide(), RingZZ::gcd(), RingZZ::gcd_extended(), globalZZ, RingZZ::is_equal(), Ring::minus_one(), RingZZ::mult(), RingElementGenerator< RingType >::nextElement(), ntrials, Ring::one(), testRingGCD(), and Ring::zero().