133{
134 typename T::ElementType a, b, c;
136 mpq_t n1;
137 R.init(a);
138 R.init(b);
139 R.init(c);
140 mpz_init(m);
142 mpq_init(n1);
143
144
145 mpz_set_str(
base,
"2131236127486324783264782364", 10);
146 R.set_from_mpz(c,
base);
147 for (int i = -1000; i < 1000; i++)
148 {
149 mpz_set_si(m, i);
151 R.set_from_mpz(a, m);
152 R.set_from_long(b, i);
153 R.add(b, c, b);
154 EXPECT_TRUE(R.is_equal(a, b));
155 }
156
157
158 for (int i = 1; i < 300; i++)
159 {
160 mpq_set_si(n1, 43999, i);
161 mpq_canonicalize(n1);
162
163
164
165 if (R.characteristic() == 0 or (i % R.characteristic()) == 0) continue;
166 bool ok = R.set_from_mpq(a, n1);
167 EXPECT_TRUE(ok);
168 R.set_from_long(b, 43999);
169 R.set_from_long(c, i);
170 if (!R.is_zero(c))
171 {
172 R.divide(c, b, c);
173 EXPECT_TRUE(R.is_equal(a, c));
174 }
175 }
176
177 R.clear(a);
178 R.clear(b);
179 R.clear(c);
180 mpz_clear(m);
182 mpq_clear(n1);
183}
static CanonicalForm base