示例#1
0
  TEST(Integer, CppPow)
  {
    for(int i=0; i<50; i++) {
      Integer p = Integer::GetRandomInteger(1024, true);

      Integer a = Integer::GetRandomInteger(0, p);
      Integer e1 = Integer::GetRandomInteger(0, p-1);
      Integer e2 = Integer::GetRandomInteger(0, p-1);

      EXPECT_EQ(a.Pow(e1, p).Pow(e2, p), a.Pow(e2, p).Pow(e1, p));

      Integer v = a.Pow(e1, p);
      EXPECT_EQ(v.MultiplyMod(v, p), a.Pow(e1 + e1, p));
    }
  }
示例#2
0
//-----------------------------------------------------------------------------------
 Integer Converter::ToInteger(std::string &polynom) {
   Integer result;
   if(polynom.length() != 0) {
      int last_nonzero = polynom.find_last_of("1");
      result.Pow(2,last_nonzero);
   }
  return result;
 }
示例#3
0
  TEST(Integer, OpenPow)
  {
    Integer base(10);
    Integer exp(100);
    EXPECT_EQ(exp, base.Pow(Integer(10), Integer(101)));
    EXPECT_EQ(Integer(0), base.Pow(Integer(10), Integer(100)));

    for(int i=0; i<10; i++) {
      Integer p = Integer::GetRandomInteger(1024, true);
      Integer a = Integer::GetRandomInteger(0, p);
      Integer b = Integer::GetRandomInteger(0, p);
      Integer e1 = Integer::GetRandomInteger(0, p);
      Integer e2 = Integer::GetRandomInteger(0, p);


      EXPECT_EQ(p.PowCascade(a, e1, b, e2), 
          (a.Pow(e1, p) * b.Pow(e2, p))%p);

      EXPECT_EQ(Integer(1), a.Pow(0, p));
      EXPECT_EQ(a, a.Pow(1, p));
    }
  }