Opened 10 years ago
Closed 10 years ago
#10626 closed defect (fixed)
Route sparse integer matrices to a working Smith form
Reported by: | rbeezer | Owned by: | jason, was |
---|---|---|---|
Priority: | minor | Milestone: | sage-4.6.2 |
Component: | linear algebra | Keywords: | Smith form |
Cc: | ddrake, jthurber | Merged in: | sage-4.6.2.alpha3 |
Authors: | Rob Beezer | Reviewers: | David Loeffler |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
Sparse integer matrices get sent to the generic Smith form routine, where they fail (see #10625). They should instead get dense-ified and routed to the integer-only version. This solves some failures on #10604.
sage: A = matrix(2, range(4), sparse=True) sage: A.smith_form() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /home/sage/sage-4.6.1.alpha2/devel/sage-main/<ipython console> in <module>() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/matrix/matrix2.so in sage.matrix.matrix2.Matrix.smith_form (sage/matrix/matrix2.c:37477)() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/matrix/matrix2.so in sage.matrix.matrix2._smith_onestep (sage/matrix/matrix2.c:42366)() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/matrix/matrix2.so in sage.matrix.matrix2._smith_onestep (sage/matrix/matrix2.c:42181)() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/matrix/matrix2.so in sage.matrix.matrix2._generic_clear_column (sage/matrix/matrix2.c:41049)() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/rings/integer.so in sage.rings.integer.Integer.inverse_mod (sage/rings/integer.c:28740)() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/rings/integer.so in sage.rings.integer.as_Integer (sage/rings/integer.c:6052)() /home/sage/sage-4.6.1.alpha2/local/lib/python2.6/site-packages/sage/rings/integer.so in sage.rings.integer.Integer.__init__ (sage/rings/integer.c:7312)() TypeError: unable to coerce <class 'sage.rings.ideal.Ideal_pid'> to an integer
Attachments (1)
Change History (4)
Changed 10 years ago by
comment:1 Changed 10 years ago by
- Cc ddrake jthurber added
- Status changed from new to needs_review
comment:2 Changed 10 years ago by
- Keywords Smith form added
- Reviewers set to David Loeffler
- Status changed from needs_review to positive_review
I've just uploaded a patch at #10625, which makes the examples here work. That said, densifying a matrix and calculating Smith form of that using integer-specific routines is going to be much faster than calling a slow generic routine; so this patch should still be applied. Applies fine to 4.6.2.alpha0 and all doctests pass, so positive review.
comment:3 Changed 10 years ago by
- Merged in set to sage-4.6.2.alpha3
- Resolution set to fixed
- Status changed from positive_review to closed
Note: See
TracTickets for help on using
tickets.
Patch mirrors docstring for dense matrices and just ships off a dense version of the matrix to that code.
matrix/matrix_integer_sparse.pyx
is not included into the documentation, so I've added that chore to my list.