Hi, I am pretty much done with the level 0 of sparse[1] and dense matrices[2]. The only problems remaining are the solvers of sparse matrices and merge conflicts.
I have very few references for sparse solvers right now. I am trying to use the earlier work of sherjil's in this domain, but I am finding it difficult to understand it. Plus I have been told more than once that sparse matrices are much less used as compared to dense matrices, so I have decided to move to more urgent problem of designing and implementing level 1 given the basics are implemented. As for merge conflicts, I will hopefully fix them by tomorrow. Now regarding level 1, for starting, I think that level 1 will consist primarily of two classes, Sparse and Dense. The point of these classes is to "collect" all the methods in [1] and [2]. The data structure of the dense class will be list of lists and for sparse it will be CSR. The choice of CSR is because of the following two reasons-- - _csrtodok from sparsearith.py is quite effective - CSR takes significantly less space than DOK I feel that we don't need to worry about the equivalent of _handle_creation_matrix in level 1. The data structures should be the same as in Level 0. The level 1 will just collect all methods and define things operations __add__, __mul__ using densearith and sparsearith. This level as I saw it at present should work like this- - Given a matrix like [[1, 2], [3, 4]] and operations like add([[1, 2 ], [3, 4]], [[4, 5], [6, 7]], ZZ) - Coerce all elements [[ZZ(1), ZZ(2)], [ZZ(3), ZZ(4)]], [[ZZ(4), ZZ(5)], [ZZ(6), ZZ(7)]] - call add from densearith. I feel the second step here might cause speed issues. -Saurabh [1] https://github.com/sympy/sympy/pull/2206 [2] https://github.com/sympy/sympy/pull/2248 -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. For more options, visit https://groups.google.com/groups/opt_out.
