Opened 11 years ago

Closed 11 years ago

# Route sparse integer matrices to a working Smith form

Reported by: Owned by: rbeezer jason, was minor sage-4.6.2 linear algebra Smith form ddrake, jthurber sage-4.6.2.alpha3 Rob Beezer David Loeffler N/A

### 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
```

### comment:1 Changed 11 years ago by rbeezer

• Authors set to Rob Beezer
• Status changed from new to needs_review

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.