Group checks out !
parent
6c2b28aa8b
commit
4d2a0aefc1
|
|
@ -36,6 +36,14 @@ public:
|
||||||
Cyclic operator+(const Cyclic& h) const {
|
Cyclic operator+(const Cyclic& h) const {
|
||||||
return (i_+h.i_) % N;
|
return (i_+h.i_) % N;
|
||||||
}
|
}
|
||||||
|
/// Subtraction modulo N
|
||||||
|
Cyclic operator-(const Cyclic& h) const {
|
||||||
|
return (N+i_-h.i_) % N;
|
||||||
|
}
|
||||||
|
/// Inverse
|
||||||
|
Cyclic operator-() const {
|
||||||
|
return (N-i_) % N;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace traits {
|
namespace traits {
|
||||||
|
|
@ -124,18 +132,46 @@ TEST(Cyclic, Constructor) {
|
||||||
|
|
||||||
//******************************************************************************
|
//******************************************************************************
|
||||||
TEST(Cyclic, Compose) {
|
TEST(Cyclic, Compose) {
|
||||||
G e(0), g(2), h(3);
|
EXPECT_LONGS_EQUAL(0, group::compose(G(0),G(0)));
|
||||||
EXPECT_LONGS_EQUAL(5, group::compose(g,h));
|
EXPECT_LONGS_EQUAL(1, group::compose(G(0),G(1)));
|
||||||
EXPECT_LONGS_EQUAL(0, group::compose(h,h));
|
EXPECT_LONGS_EQUAL(2, group::compose(G(0),G(2)));
|
||||||
EXPECT_LONGS_EQUAL(3, group::compose(h,e));
|
EXPECT_LONGS_EQUAL(3, group::compose(G(0),G(3)));
|
||||||
|
EXPECT_LONGS_EQUAL(4, group::compose(G(0),G(4)));
|
||||||
|
EXPECT_LONGS_EQUAL(5, group::compose(G(0),G(5)));
|
||||||
|
|
||||||
|
EXPECT_LONGS_EQUAL(2, group::compose(G(2),G(0)));
|
||||||
|
EXPECT_LONGS_EQUAL(3, group::compose(G(2),G(1)));
|
||||||
|
EXPECT_LONGS_EQUAL(4, group::compose(G(2),G(2)));
|
||||||
|
EXPECT_LONGS_EQUAL(5, group::compose(G(2),G(3)));
|
||||||
|
EXPECT_LONGS_EQUAL(0, group::compose(G(2),G(4)));
|
||||||
|
EXPECT_LONGS_EQUAL(1, group::compose(G(2),G(5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//******************************************************************************
|
//******************************************************************************
|
||||||
TEST(Cyclic, Between) {
|
TEST(Cyclic, Between) {
|
||||||
G g(2), h(3);
|
EXPECT_LONGS_EQUAL(0, group::between(G(0),G(0)));
|
||||||
EXPECT_LONGS_EQUAL(1, group::between(g,h));
|
EXPECT_LONGS_EQUAL(1, group::between(G(0),G(1)));
|
||||||
EXPECT_LONGS_EQUAL(0, group::between(g,g));
|
EXPECT_LONGS_EQUAL(2, group::between(G(0),G(2)));
|
||||||
EXPECT_LONGS_EQUAL(0, group::between(h,h));
|
EXPECT_LONGS_EQUAL(3, group::between(G(0),G(3)));
|
||||||
|
EXPECT_LONGS_EQUAL(4, group::between(G(0),G(4)));
|
||||||
|
EXPECT_LONGS_EQUAL(5, group::between(G(0),G(5)));
|
||||||
|
|
||||||
|
EXPECT_LONGS_EQUAL(4, group::between(G(2),G(0)));
|
||||||
|
EXPECT_LONGS_EQUAL(5, group::between(G(2),G(1)));
|
||||||
|
EXPECT_LONGS_EQUAL(0, group::between(G(2),G(2)));
|
||||||
|
EXPECT_LONGS_EQUAL(1, group::between(G(2),G(3)));
|
||||||
|
EXPECT_LONGS_EQUAL(2, group::between(G(2),G(4)));
|
||||||
|
EXPECT_LONGS_EQUAL(3, group::between(G(2),G(5)));
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************************************************************************
|
||||||
|
TEST(Cyclic, Ivnverse) {
|
||||||
|
EXPECT_LONGS_EQUAL(0, group::inverse(G(0)));
|
||||||
|
EXPECT_LONGS_EQUAL(5, group::inverse(G(1)));
|
||||||
|
EXPECT_LONGS_EQUAL(4, group::inverse(G(2)));
|
||||||
|
EXPECT_LONGS_EQUAL(3, group::inverse(G(3)));
|
||||||
|
EXPECT_LONGS_EQUAL(2, group::inverse(G(4)));
|
||||||
|
EXPECT_LONGS_EQUAL(1, group::inverse(G(5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//******************************************************************************
|
//******************************************************************************
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue