On 02/15/2010 03:19 PM, Florent Hivert wrote:
Hi there,
I have a slightly stupid question ! First of all consider the following
behavior (sage 4.3.2):
sage: A = MatrixSpace(ZZ, 3)
sage: A.one()
[1 0 0]
[0 1 0]
[0 0 1]
sage: A.one()[1,2] = 1
sage: A.one()
[1 0 0]
[0 1 1]
[0 0 1]
This is definitely bad. It happens because one is generically computed by
coercion from 1 and then cached without making it immutable. I see at least
three solutions:
1. - Don't cache at all
2. - Return a cached immutable
3. - Return a mutable copy of a cached
To have an idea of the usage I went trough the code:
- MatrixSpace.identity_matrix implement 1.
- MatrixSpace.zero_matrix implement 3.
Of course, my opinion is to make those three methods implements 2. :-)
+1 for doing option (2).
Jason
--
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