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

◆ TEST() [2/9]

TEST ( RingRRR ,
axioms  )

Definition at line 122 of file RingRRRTest.cpp.

123{
124 RingRRR *R = RingRRR::create(std::make_unique<M2::ARingRRR>(100));
126 for (int i = 0; i < ntrials; i++)
127 {
128 ring_elem a = gen.nextElement();
129 ring_elem b = gen.nextElement();
130 ring_elem c = gen.nextElement();
131
132 // Test commutativity
133 // test: a*b = b*a
134 // test: a+b == b+a
135 ring_elem d = R->add(a, b);
136 ring_elem e = R->add(b, a);
137 EXPECT_TRUE(R->is_equal(d, e));
138 d = R->mult(a, b);
139 e = R->mult(b, a);
140 EXPECT_TRUE(almostEqual(R, 98, d, e));
141
142 // Test associativity
143 // test: a+(b+c) == (a+b)+c
144 // test: a*(b*c) == (a*b)*c
145 d = R->add(a, R->add(b, c));
146 e = R->add(R->add(a, b), c);
147 EXPECT_TRUE(almostEqual(R, 94, d, e));
148 d = R->mult(a, R->mult(b, c));
149 e = R->mult(R->mult(a, b), c);
150 EXPECT_TRUE(almostEqual(R, 94, d, e));
151
152 // Test distributivity
153 // test: a*(b+c) == a*b + a*c
154 d = R->mult(a, R->add(b, c));
155 e = R->add(R->mult(a, b), R->mult(a, c));
156 EXPECT_TRUE(almostEqual(R, 92, d, e));
157 }
158}
const int ntrials
Definition ARingTest.hpp:42
M2::ConcreteRing< M2::ARingRRR > RingRRR
bool almostEqual(const RingRRR *R, int nbits, ring_elem a, ring_elem b)
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
static ConcreteRing< M2::ARingRRR > * create(std::unique_ptr< M2::ARingRRR > R)
virtual bool is_equal(const ring_elem f, const ring_elem g) const
virtual ring_elem add(const ring_elem f, const ring_elem g) const

References M2::ConcreteRing< RingType >::add(), almostEqual(), M2::ConcreteRing< M2::ARingRRR >::create(), M2::ConcreteRing< RingType >::is_equal(), M2::ConcreteRing< RingType >::mult(), RingElementGenerator< RingType >::nextElement(), and ntrials.