I'm seeing a change in error messages when multiplying matrices over
incompatible rings.

This is current behavior for just the elements of the base rings.

{{{
sage: QQ(45/67)*GF(7)(3)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call
last)

/home/sage/dev/devel/sage-main/<ipython console> in <module>()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/element.so
in sage.structure.element.RingElement.__mul__ (sage/structure/
element.c:12061)()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/coerce.so
in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/
structure/coerce.c:7327)()

TypeError: unsupported operand parent(s) for '*': 'Rational Field' and
'Finite Field of size 7'
}}}


Good.  But now, for matrices over the same base rings, the traceback
is longer and concludes complaining about not having an inverse of an
element (maybe in GF(7)?).  Three months ago, a matrix product like
this would have yielded a traceback and error message pretty much just
like what happens above for plain elements.

Any guesses on what has changed?  This looks to me like a step
backwards, so I wonder if something more fundamental is wrong?

{{{
sage: sage: W = matrix(QQ, 1, 2, [3, 4])
sage: sage: V = matrix(GF(7), 2, 1, [2, 5])
sage: sage: W*V
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call
last)

/home/sage/dev/devel/sage-main/<ipython console> in <module>()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/element.so
in sage.structure.element.Matrix.__mul__ (sage/structure/element.c:
15876)()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/coerce.so
in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/
structure/coerce.c:6368)()

/sage/dev/local/lib/python2.6/site-packages/sage/matrix/action.so in
sage.matrix.action.MatrixMatrixAction._call_ (sage/matrix/action.c:
2742)()

/sage/dev/local/lib/python2.6/site-packages/sage/matrix/
matrix_rational_dense.so in
sage.matrix.matrix_rational_dense.Matrix_rational_dense.change_ring
(sage/matrix/matrix_rational_dense.c:13867)()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/element.so
in sage.structure.element.RingElement.__div__ (sage/structure/
element.c:12722)()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/coerce.so
in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/
structure/coerce.c:6426)()

/sage/dev/local/lib/python2.6/site-packages/sage/structure/element.so
in sage.structure.element.RingElement.__div__ (sage/structure/
element.c:12696)()

/sage/dev/local/lib/python2.6/site-packages/sage/rings/finite_rings/
integer_mod.so in
sage.rings.finite_rings.integer_mod.IntegerMod_int._div_ (sage/rings/
finite_rings/integer_mod.c:19384)()

ZeroDivisionError: Inverse does not exist.
}}}

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to