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; }