On Tue, Jun 2, 2009 at 7:22 PM, davidp <dav...@reed.edu> wrote: > > I tried adding a delete_row method to matrix_integer_sparse.pyx but > stopped after getting the error message:
Just def your method -- do not cpdef it. You can still use Cython code in a cpdef's method and it will be just as fast. Make sure that your "delete row" method returns a *new* matrix by the way... William > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Error converting Pyrex file to C: > ------------------------------------------------------------ > ... > add_mpz_vector_init(&M._matrix[i], &self._matrix[i], & > (<Matrix_integer_sparse>right)._matrix[i], mul) > mpz_clear(mul) > return M > > # added by David Perkinson > cpdef ModuleElement _delete_row_(self, Py_ssize_t row_number): > ^ > ------------------------------------------------------------ > > /usr/local/sage-devel/devel/sage-devel/sage/matrix/ > matrix_integer_sparse.pyx:216:10: C method '_delete_row_' not > previously declared in definition part of extension type > Error running command, failed with status 256. > sage: There was an error installing modified sage library code. > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > I might have to actually read the Cython documentation! > > Dave > > > > On Jun 2, 5:43 pm, Jason Grout <jason-s...@creativetrax.com> wrote: >> William Stein wrote: >> > On Mon, Jun 1, 2009 at 5:16 PM, davidp <dav...@reed.edu> wrote: >> >> Is there a fast way to create a submatrix? >> >> >> ------------------------------------------------- >> >> >> sage: version() >> >> 'Sage Version 4.0.alpha0, Release Date: 2009-05-15' >> >> sage: G = graphs.GridGraph([100,100]) >> >> sage: L = G.laplacian_matrix() >> >> sage: L >> >> 10000 x 10000 sparse matrix over Integer Ring >> >> sage: time M = L[1:9999,1:9999] >> >> CPU times: user 24.93 s, sys: 0.04 s, total: 24.97 s >> >> Wall time: 25.27 s >> >> >> ---------------------------------------------------- >> >> >> I am just interested in deleting a single row and column of the matrix >> >> (not necessarily the first). >> >> >> Thanks, >> >> > There is no fast way to do that right now. One could easily add code >> > to SAGE_ROOT/devel/sage/sage/matrix/matrix_integer_sparse.pyx that >> > would provide blazingly fast deletion of a row, and reasonably fast >> > deletion of a column. Of course it would be better to implement >> > arbitrary slicing in some optimized way in matrix_integer_sparse.pyx. >> > I hope somebody does so. >> >> Just looking at the generic code, it seems that it goes through each and >> every index position in the slice, setting the new matrix entry to the >> old one. This is obviously the wrong thing to do for sparse matrices, >> and can likely trivially be made faster. I think all you may have to do >> is override the matrix_from_rows_and_columns for sparse matrices. >> >> Jason > > > -- William Stein Associate Professor of Mathematics University of Washington http://wstein.org --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---