Hi All, I am trying to write a small class which implements symmetric matrices, but I'm unclear how to inherit from sage.matrix.matrix_dense. How can I tell what the initialization does, and how to properly call it? I tried looking at sage.matrix.matrix_integer_dense.pyx to do this, but I'm still having some trouble. I have included the class and errors below. Thanks!
-Jon =) -------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------- | SAGE Version 2.6, Release Date: 2007-06-02 | | Type notebook() for the GUI, and license() for information. | ---------------------------------------------------------------------- Loading SAGE library. Current Mercurial branch is: qfdevel sage: SymmetricMatrix(ZZ,3, [1,2,3,4,5,6]) --------------------------------------------------------------------------- <type 'exceptions.AttributeError'> Traceback (most recent call last) /Users/jonhanke/Documents/sage-2.6/<ipython console> in <module>() /Users/jonhanke/Documents/sage-2.6/local/lib/python2.5/site-packages/ sage/quadratic_forms/symmetric_matrix.py in __init__(self, R, n, entries) 53 """ 54 ## Run the parent initialization ---> 55 Matrix_dense.__init__(self, R) 56 57 ## Set the size of the matrix /Users/jonhanke/Documents/sage-2.6/matrix0.pyx in matrix0.Matrix.__init__() <type 'exceptions.AttributeError'>: 'sage.rings.integer_ring.IntegerRing_class' object has no attribute 'nrows' sage: -------------------------------------------------------------------------------------------------------------------------------------------------------------- from sage.matrix.matrix_dense import Matrix_dense from sage.rings.integer import is_Integer class SymmetricMatrix(Matrix_dense): """ SymmetricMatrix() """ def __init__(self, R, n, entries): """ Initialize a symmetric matrix of a given size, and possibly with given entries along its (upper-triangular) rows. INPUT: R -- a ring n -- an integer n >= 0 entries -- a list of entries in parent of size n*(n+1)/2 EXAMPLES: """ ## Run the parent initialization Matrix_dense.__init__(self, R) ## Set the size of the matrix if is_Integer(n) and (n >= 0): self._nrows = n self._ncols = n else: raise TypeError, "Oops! The size " + str(n) + "must be a non-negative integer." ## Check if entries is a list for the corrent size, and if so, write the upper-triangular matrix if isinstance(entries, list) and (len(entries) == n*(n+1)/2): ind = 0 for i in range(n): for j in range(i, n): self._entries[i+j] = entries[ind] ind += 1 else: raise TypeError, "Oops! The entries " + str(entries) + "must be a list of size n(n+1)/2." --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---