Ejemplo n.º 1
0
void program()
{
  // This test is for testing printing functions
  GlobalManager CoCoAFoundations;


  PolyRing R = NewPolyRing(RingQQ(), symbols("a","b")); // QQ[a,b]
  ring K = NewFractionField(R); // QQ(a,b)
  PolyRing Kxy = NewPolyRing(K, symbols("x", "y"));
  RingHom f = CanonicalHom(R,K);
  RingHom g = CanonicalHom(K,Kxy);
  RingHom h = g(f);
  RingElem a = RingElem(R, symbol("a"));
  RingElem b = RingElem(R, symbol("b"));
  RingElem Inv_a = 1/f(a);
  RingElem x = RingElem(Kxy, symbol("x"));
  RingElem Inv_a_x = g(Inv_a)*x;
  
  //  std::cout << 2*a/3-1 << std::endl;
  //  std::cout << 2*h(a)*x-1 << std::endl;
  
  { ostringstream s;  s << a/2;          TEST_ASSERT(s.str() == "(1/2)*a"); }
  { ostringstream s;  s << -a/3;         TEST_ASSERT(s.str() == "(-1/3)*a"); }
  { ostringstream s;  s << -x/3;         TEST_ASSERT(s.str() == "(-1/3)*x"); }
  { ostringstream s;  s << h(-a)*x*x + h(1-a)*x + h(1-a);
    TEST_ASSERT(s.str() == "-a*x^2 +(-a +1)*x -a +1"); }
  { ostringstream s;  s << x - h(a*b);   TEST_ASSERT(s.str() == "x -a*b"); }
  { ostringstream s;  s << -x;           TEST_ASSERT(s.str() == "-x"); }
  { ostringstream s;  s << -x+1;         TEST_ASSERT(s.str() == "-x +1"); }
  { ostringstream s;  s << x-1;          TEST_ASSERT(s.str() == "x -1"); }
  { ostringstream s;  s << x- h(a);      TEST_ASSERT(s.str() == "x -a"); }
  { ostringstream s;  s << 1/f(a);       TEST_ASSERT(s.str() == "1/a"); }
  { ostringstream s;  s << 1/h(a);       TEST_ASSERT(s.str() == "1/a"); }
  { ostringstream s;  s << g(1/f(a))*x;  TEST_ASSERT(s.str() == "(1/a)*x"); }
  { ostringstream s;  s << h(a)*x;       TEST_ASSERT(s.str() == "a*x"); }
  { ostringstream s;  s << x/(-1);       TEST_ASSERT(s.str() == "-x"); }
  { ostringstream s;  s << x-one(Kxy)/2; TEST_ASSERT(s.str() == "x -1/2"); }
  { ostringstream s;  s << x-h(a/2);     TEST_ASSERT(s.str() == "x -a/2"); }
  { ostringstream s;  s << x-h(a)/2;     TEST_ASSERT(s.str() == "x -a/2"); }
  { ostringstream s;  s << x-h(a+1)/2;   TEST_ASSERT(s.str() == "x +(-a -1)/2"); }
  { R->myOutputSelfLong(std::cout); }
  { std::cout << std::endl; }
  { NewPolyRing(R, SymbolRange("x",1,3))->myOutputSelfLong(std::cout); }
  { std::cout << std::endl; }
  { NewPolyRing(NewFractionField(R), SymbolRange("x",1,3))->myOutputSelfLong(std::cout); }
  { std::cout << std::endl; }
  { NewPolyRing(NewQuotientRing(R,ideal(ReadExpr(R,"a^2-2"))), SymbolRange("x",1,3))->myOutputSelfLong(std::cout); }
  { std::cout << std::endl; }
  
  //  std::cout << x-h(a)/2 << std::endl;

}