Macaulay2 Engine
Loading...
Searching...
No Matches
RingQQTest.cpp
Go to the documentation of this file.
1// Copyright 2013 Michael E. Stillman
2
31
32#include "RingTest.hpp"
33
34static bool maxH_initialized = false;
35static mpz_t maxH;
36
37#include "aring-glue.hpp"
38#include "ZZp.hpp"
39
40template <>
42{
43 if (index < 50) return R.from_long(index - 25);
45 {
46 maxH_initialized = true;
47 mpz_init(maxH);
48 mpz_set_str(maxH, "100000000000", 10);
49 }
52 EXPECT_TRUE(R.from_rational(a1, result));
53 return result;
54}
55
56TEST(RingQQ, create)
57{
58 const Ring *R = globalQQ;
59 EXPECT_TRUE(R != nullptr);
60
61 EXPECT_TRUE(dynamic_cast<const Z_mod *>(R) == nullptr);
62 EXPECT_TRUE(dynamic_cast<const RingQQ *>(R) != nullptr);
63 EXPECT_EQ(R->coefficient_type(), Ring::COEFF_QQ);
64 EXPECT_FALSE(R->is_ZZ());
65 EXPECT_EQ(ringName(*R), "QQGMP");
66}
68{
69 const Ring *R = globalQQ;
70 EXPECT_TRUE(R->is_equal(R->one(), R->from_long(1)));
71 EXPECT_TRUE(R->is_equal(R->minus_one(), R->from_long(-1)));
72 EXPECT_TRUE(R->is_equal(R->zero(), R->from_long(0)));
73 EXPECT_TRUE(R->is_zero(R->from_long(0)));
74}
82// Local Variables:
83// compile-command: "make -C $M2BUILDDIR/Macaulay2/e/unit-tests check "
84// indent-tabs-mode: nil
85// End:
const int ntrials
Definition ARingTest.hpp:42
std::string ringName(const T &R)
static bool maxH_initialized
static mpz_t maxH
TEST(RingQQ, create)
ring_elem getElement< RingQQ >(const RingQQ &R, int index)
void testRingPower(const T *R, int ntrials)
Definition RingTest.hpp:201
void testRingDivide(const T *R, int ntrials)
Definition RingTest.hpp:140
void testRingSyzygy(const T *R, int ntrials)
Definition RingTest.hpp:273
void testRingAxioms(const T *R, int ntrials)
Definition RingTest.hpp:164
void testRingAdd(const T *R, int ntrials)
Definition RingTest.hpp:111
void testRingSubtract(const T *R, int ntrials)
Definition RingTest.hpp:126
void testRingNegate(const T *R, int ntrials)
Definition RingTest.hpp:98
Shared gtest fixture for the legacy Ring-based Ring*Test.cpp suite.
Legacy Z_mod — a Ring-derived Z/p with log / exp tables.
M2::RingQQ RingQQ
const RingQQ * globalQQ
Definition aring.cpp:24
ConcreteRing<RingType> — the templated bridge between aring and the legacy Ring API.
virtual ring_elem from_long(long n) const
virtual bool from_rational(mpq_srcptr q, ring_elem &result) const
virtual bool is_ZZ() const
Definition ring.hpp:171
ring_elem one() const
Definition ring.hpp:357
virtual bool is_equal(const ring_elem f, const ring_elem g) const =0
ring_elem zero() const
Definition ring.hpp:359
virtual ring_elem from_long(long n) const =0
ring_elem minus_one() const
Definition ring.hpp:358
@ COEFF_QQ
Definition ring.hpp:222
virtual bool is_zero(const ring_elem f) const =0
virtual CoefficientType coefficient_type() const
Definition ring.hpp:223
xxx xxx xxx
Definition ring.hpp:102
Engine-side Z/p ring for small primes (p < 32767), using a discrete-log (Zech) representation.
Definition ZZp.hpp:63
void subtract(int &result, int a, int b)
VALGRIND_MAKE_MEM_DEFINED & result(result)
mpq_srcptr gmp_QQ
Definition m2-types.h:145
std::ostringstream & ones(std::ostringstream &o, int len)
gmp_QQ rawRandomQQ(gmp_ZZ height)
Definition random.cpp:194