Ejemplo n.º 1
0
  RingElem CommonDenom(ConstRefRingElem f)
  {
    if (!IsPolyRing(owner(f)))
      CoCoA_ERROR(ERR::NotElemPolyRing, "CommonDenom(f)");
    const PolyRing Qx = owner(f);
    const ring Q = CoeffRing(Qx);
    if (!IsFractionField(Q))
      CoCoA_ERROR(ERR::NotElemFrF, "CoeffRing inside CommonDenom(f)");
    const ring R = BaseRing(Q);
    if (!IsTrueGCDDomain(R))
      CoCoA_ERROR(ERR::NotTrueGCDDomain, "BaseRing of CoeffRing inside CommonDenom(f)");
//     if (IsField(R))  // see documentation (Bugs section)
//       CoCoA_ERROR(ERR::NotTrueGCDDomain, "content(f)");
    if (IsZero(f)) return one(R);

    RingElem ans(R);
    Qx->myCommonDenom(raw(ans), raw(f));
    return ans;
  }