Пример #1
0
TEST(RingZZmod2, create)
{
  Ring* R = Z_mod::create(2);
  EXPECT_TRUE(R != 0);

  EXPECT_TRUE(dynamic_cast<const Z_mod*>(R) != 0);
  EXPECT_EQ(R->coefficient_type(), Ring::COEFF_BASIC);
  EXPECT_FALSE(R->is_ZZ());
  EXPECT_EQ(ringName(*R), "ZZ/2");
}
Пример #2
0
TEST(RingQQ, create)
{
  Ring *R = globalQQ;
  EXPECT_TRUE(R != 0);

  EXPECT_TRUE(dynamic_cast< const Z_mod * >(R) == 0);
  EXPECT_TRUE(dynamic_cast< const QQ * >(R) != 0);
  EXPECT_EQ(R->coefficient_type(), Ring::COEFF_QQ);
  EXPECT_FALSE(R->is_ZZ());
  EXPECT_EQ(ringName(*R), "QQ");
}
Пример #3
0
TEST(RingCCC, create)
{
  Ring *R = CCC::create(100);
  EXPECT_TRUE(R != 0);

  EXPECT_TRUE(dynamic_cast<const Z_mod *>(R) == 0);
  EXPECT_TRUE(dynamic_cast<const CCC *>(R) != 0);
  EXPECT_FALSE(R->is_ZZ());
  EXPECT_TRUE(R->is_CCC());
  EXPECT_EQ(ringName(*R), "CCC_100");
}
Пример #4
0
TEST(RingRRR, create)
{
  Ring *R = RRR::create(100);
  EXPECT_TRUE(R != 0);

  EXPECT_TRUE(dynamic_cast< const Z_mod * >(R) == 0);
  EXPECT_TRUE(dynamic_cast< const RRR * >(R) != 0);
  EXPECT_FALSE(R->is_ZZ());
  EXPECT_TRUE(R->is_RRR());
  EXPECT_EQ(ringName(*R), "RRR_100");
}
Пример #5
0
TEST(ARingZZpFlint, create)
{
  M2::ARingZZpFlint R(101);

  EXPECT_EQ(ringName(R), "AZZFlint/101");
  testSomeMore(R);

  M2::ARingZZpFlint::ElementType a;
  R.init(a);
  R.set_from_long(a, 99);
  R.set_from_long(a, 101);
  R.set_from_long(a, 103);
  R.clear(a);
}
Пример #6
0
TEST(ARingQQGMP, create) {
  M2::ARingQQGMP R;

  M2::ARingQQGMP::ElementType a;
  buffer o;

  ARingElementGenerator<M2::ARingQQGMP> gen(R);
  R.init(a);
  gen.nextElement(a);

  EXPECT_EQ(ringName(R), "QQGMP");
  EXPECT_EQ(R.cardinality(), static_cast<size_t>(-1));
  EXPECT_EQ(R.characteristic(), 0);
  R.clear(a);
}
Пример #7
0
TEST(ARingZZpFFPACK, create)
{
  M2::ARingZZpFFPACK R(101);

  EXPECT_EQ(ringName(R), "ZZpFPACK(101,1)");
  testSomeMore(R);

  std::cout << "max modulus for ffpack zzp: "
            << M2::ARingZZpFFPACK::getMaxModulus() << std::endl;

  M2::ARingZZpFFPACK::ElementType a;
  R.init(a);
  R.set_from_long(a, 99);
  R.set_from_long(a, 101);
  R.set_from_long(a, 103);
  R.clear(a);
}
Пример #8
0
TEST(RingTower, create)
{
  std::vector<std::string> vars = {"a", "b"};
  M2_ArrayString varnames = toM2ArrayString(vars);
  const Tower* R = Tower::create(101, varnames);
  EXPECT_TRUE(R != 0);
  EXPECT_EQ(ringName(*R), "Tower[ZZ/101[a,b]]");
  EXPECT_EQ(R->n_vars(), 2);
  for (int i=1; i<1; i++)
    {
      ring_elem f = R->random();
      buffer o;
      o << "f = ";
      R->elem_text_out(o,f);
      std::cout << o.str() << std::endl;
    }
}
Пример #9
0
TEST(ARingZZp, create)
{
  M2::ARingZZp R(101);

  M2::ARingZZp::ElementType a;
  buffer o;

  ARingElementGenerator<M2::ARingZZp> gen(R);
  R.init(a);
  gen.nextElement(a);

  EXPECT_EQ(ringName(R), "AZZ/101");
  EXPECT_EQ(R.cardinality(), 101);
  EXPECT_EQ(R.characteristic(), 101);
  // Now check what the generator is, as an integer
  R.init(a);
  R.set_var(a, 0);
  R.elem_text_out(o, a, true, true, false);
  std::cout << "generator is " << o.str() << std::endl;
  R.clear(a);
}
Пример #10
0
TEST(ARingQQGMP, display) {
  M2::ARingQQGMP R;

  M2::ARingQQGMP::ElementType a, b;
  buffer o;

  ARingElementGenerator<M2::ARingQQGMP> gen(R);
  R.init(a);
  R.init(b);
  gen.nextElement(a);
  gen.nextElement(b);
  R.divide(a,a,b);
  R.elem_text_out(o, a, true, false, false);
  EXPECT_TRUE(strcmp(o.str(), "24/23") == 0);
  std::cout << "a = ." << o.str() << "." << std::endl;

  EXPECT_EQ(ringName(R), "QQGMP");
  EXPECT_EQ(R.cardinality(), static_cast<size_t>(-1));
  EXPECT_EQ(R.characteristic(), 0);
  R.clear(a);
}
Пример #11
0
  TEST(ARingGFGivaroGivaro, create) {
    M2::ARingGFGivaro R(5,3);
      
    EXPECT_EQ(ringName(R), "GF(5,3,Givaro)");
    EXPECT_EQ(R.cardinality(), 125);
    EXPECT_EQ(R.characteristic(), 5);

    M2_arrayint gen_modpoly = R.getModPolynomialCoeffs();
    std::cout << "minimal polynomial = ";
    dintarray(gen_modpoly);
    std::cout << std::endl;

    M2_arrayint gen_coeffs = R.getGeneratorCoeffs();
    std::cout << "generator polynomial = ";
    dintarray(gen_coeffs);
    std::cout << std::endl;

    // Check what values integers go to
    M2::ARingGFGivaro::ElementType a;
    R.init(a);
    for (int i=-5; i<R.characteristic(); i++)
      {
        R.set_from_long(a, i);
        M2_arrayint coeffs = R.fieldElementToM2Array(a);
        if (i >= 0) EXPECT_EQ(coeffs->array[0], i);
        EXPECT_EQ(coeffs->len, 3);
        for (int j=1; j<3; j++)
          EXPECT_EQ(coeffs->array[j], 0);
        std::cout << i << " = ";
        dintarray(coeffs);
        std::cout << std::endl;
      }
    R.clear(a);

    testSomeMore(R);
  }
Пример #12
0
TEST(ARingRRR, create)
{
  M2::ARingRRR R(100);
  EXPECT_EQ(ringName(R), "ARRR_100");
  EXPECT_EQ(R.characteristic(), 0);
}
Пример #13
0
TEST(ARingCC, create)
{
  M2::ARingCC C;
  EXPECT_EQ(ringName(C), "ACC_53");
  EXPECT_EQ(C.characteristic(), 0);
}