def ideal(self, *gens, **kwds): """ Create an ideal in this polynomial ring. """ do_coerce = False if len(gens) == 1: from sage.rings.ideal import is_Ideal if is_Ideal(gens[0]): if gens[0].ring() is self: return gens[0] gens = gens[0].gens() elif isinstance(gens[0], (list, tuple)): gens = gens[0] if not self._has_singular: # pass through MPolynomialRing_generic.ideal(self,gens,**kwds) if is_SingularElement(gens): gens = list(gens) do_coerce = True if is_Macaulay2Element(gens): gens = list(gens) do_coerce = True elif not isinstance(gens, (list, tuple)): gens = [gens] if ('coerce' in kwds and kwds['coerce']) or do_coerce: gens = [self(x) for x in gens] # this will even coerce from singular ideals correctly! return multi_polynomial_ideal.MPolynomialIdeal(self, gens, **kwds)
def ideal(self, *gens, **kwds): """ Create an ideal in this polynomial ring. """ do_coerce = False if len(gens) == 1: from sage.rings.ideal import is_Ideal if is_Ideal(gens[0]): if gens[0].ring() is self: return gens[0] gens = gens[0].gens() elif isinstance(gens[0], (list, tuple)): gens = gens[0] if not self._has_singular: # pass through MPolynomialRing_generic.ideal(self, gens, **kwds) if is_SingularElement(gens): gens = list(gens) do_coerce = True if is_Macaulay2Element(gens): gens = list(gens) do_coerce = True elif not isinstance(gens, (list, tuple)): gens = [gens] if ('coerce' in kwds and kwds['coerce']) or do_coerce: gens = [self(x) for x in gens ] # this will even coerce from singular ideals correctly! return multi_polynomial_ideal.MPolynomialIdeal(self, gens, **kwds)
def __init__(self, base_ring, n, names, order): from sage.rings.polynomial.polynomial_singular_interface import can_convert_to_singular order = TermOrder(order,n) MPolynomialRing_generic.__init__(self, base_ring, n, names, order) # Construct the generators v = [0 for _ in xrange(n)] one = base_ring(1); self._gens = [] C = self._poly_class() for i in xrange(n): v[i] = 1 # int's! self._gens.append(C(self, {tuple(v):one})) v[i] = 0 self._gens = tuple(self._gens) self._zero_tuple = tuple(v) self._has_singular = can_convert_to_singular(self) # This polynomial ring should belong to Algebras(base_ring). # Algebras(...).parent_class, which was called from MPolynomialRing_generic.__init__, # tries to provide a conversion from the base ring, if it does not exist. # This is for algebras that only do the generic stuff in their initialisation. # But here, we want to use PolynomialBaseringInjection. Hence, we need to # wipe the memory and construct the conversion from scratch. if n: from sage.rings.polynomial.polynomial_element import PolynomialBaseringInjection base_inject = PolynomialBaseringInjection(base_ring, self) self.register_coercion(base_inject)
def __init__(self, base_ring, n, names, order): from sage.rings.polynomial.polynomial_singular_interface import can_convert_to_singular order = TermOrder(order, n) MPolynomialRing_generic.__init__(self, base_ring, n, names, order) # Construct the generators v = [0 for _ in xrange(n)] one = base_ring(1) self._gens = [] C = self._poly_class() for i in xrange(n): v[i] = 1 # int's! self._gens.append(C(self, {tuple(v): one})) v[i] = 0 self._gens = tuple(self._gens) self._zero_tuple = tuple(v) self._has_singular = can_convert_to_singular(self) # This polynomial ring should belong to Algebras(base_ring). # Algebras(...).parent_class, which was called from MPolynomialRing_generic.__init__, # tries to provide a conversion from the base ring, if it does not exist. # This is for algebras that only do the generic stuff in their initialisation. # But here, we want to use PolynomialBaseringInjection. Hence, we need to # wipe the memory and construct the conversion from scratch. if n: from sage.rings.polynomial.polynomial_element import PolynomialBaseringInjection base_inject = PolynomialBaseringInjection(base_ring, self) self.register_coercion(base_inject)