diff --git a/src/sage/modules/free_module_element.pyx b/src/sage/modules/free_module_element.pyx index a59f2c033fa..e6b3f0e7c26 100644 --- a/src/sage/modules/free_module_element.pyx +++ b/src/sage/modules/free_module_element.pyx @@ -4553,7 +4553,7 @@ cdef class FreeModuleElement_generic_dense(FreeModuleElement): """ cdef list a = left._entries cdef list b = (right)._entries - v = [( a[i])._add_( b[i]) for i in range(left._degree)] + v = [( a[i])._add_( b[i]) for i in range(left._degree)] return left._new_c(v) @cython.boundscheck(False) @@ -4573,7 +4573,7 @@ cdef class FreeModuleElement_generic_dense(FreeModuleElement): """ cdef list a = left._entries cdef list b = (right)._entries - v = [( a[i])._sub_( b[i]) for i in range(left._degree)] + v = [( a[i])._sub_( b[i]) for i in range(left._degree)] return left._new_c(v) cpdef _rmul_(self, Element left): @@ -4594,7 +4594,7 @@ cdef class FreeModuleElement_generic_dense(FreeModuleElement): (1, x^4) """ if left._parent is self._parent.coordinate_ring(): - v = [left._mul_(x) for x in self._entries] + v = [left._mul_(x) for x in self._entries] else: v = [left * x for x in self._entries] return self._new_c(v) @@ -4617,9 +4617,16 @@ cdef class FreeModuleElement_generic_dense(FreeModuleElement): sage: M = span([[x, x^2+1], [1/x, x^3]], R) sage: M.basis()[0] * x (1, x^4) + + Check :issue:`40611` is fixed:: + + sage: R = cartesian_product([ZZ, ZZ]) + sage: assert R in CommutativeRings() + sage: matrix(1, 1, [R.zero()]) * vector([R.zero()]) + ((0, 0)) """ if right._parent is self._parent.coordinate_ring(): - v = [(x)._mul_(right) for x in self._entries] + v = [(x)._mul_(right) for x in self._entries] else: v = [x * right for x in self._entries] return self._new_c(v) @@ -4641,7 +4648,7 @@ cdef class FreeModuleElement_generic_dense(FreeModuleElement): right = left.parent().ambient_module()(right) cdef list a = left._entries cdef list b = (right)._entries - v = [( a[i])._mul_( b[i]) for i in range(left._degree)] + v = [( a[i])._mul_( b[i]) for i in range(left._degree)] return left._new_c(v) def __reduce__(self): @@ -5029,7 +5036,7 @@ cdef class FreeModuleElement_generic_sparse(FreeModuleElement): cdef dict v = dict((right)._entries) for i, a in left._entries.iteritems(): if i in v: - sum = (a)._add_( v[i]) + sum = (a)._add_( v[i]) if sum: v[i] = sum else: @@ -5049,7 +5056,7 @@ cdef class FreeModuleElement_generic_sparse(FreeModuleElement): cdef dict v = dict(left._entries) # dict to make a copy for i, a in (right)._entries.iteritems(): if i in v: - diff = ( v[i])._sub_(a) + diff = ( v[i])._sub_(a) if diff: v[i] = diff else: @@ -5069,7 +5076,7 @@ cdef class FreeModuleElement_generic_sparse(FreeModuleElement): cdef dict v = {} if right: for i, a in self._entries.iteritems(): - prod = (a)._mul_(right) + prod = (a)._mul_(right) if prod: v[i] = prod return self._new_c(v) @@ -5155,7 +5162,7 @@ cdef class FreeModuleElement_generic_sparse(FreeModuleElement): cdef dict v = {} for i, a in left._entries.iteritems(): if i in e: - prod = (a)._mul_( e[i]) + prod = (a)._mul_( e[i]) if prod: v[i] = prod return left._new_c(v)