On Sunday, March 9, 2014 5:21:22 PM UTC-10, Thilina Rathnayake wrote: > > Hi Mario, > > Thanks for the reply. > One of the design goals of CSymPy is that user should be able to install > and use it without additional dependencies. Currently, only compulsory > dependency for CSymPy is the gmp module. We can use FLINT, BLAS, > or LAPACK for linear algebra if the user is ready to install them, but if > not > CSymPy should be able to do them itself. I think Ondrej will have something > to add to this. >
It's really up to us how we design CSymPy. But I would try to reuse as much as we can from other libraries where it makes sense rather than reimplementing stuff ourselves. So in particular, I would use Flint, Eigen, Armadillo etc., as those are well tested libraries with wide usage. The only thing I would do, to make things easier to install is that if the user doesn't want to install all the dependencies of CSymPy, let's say Flint, then if you call the given function or class from CSymPy that depends on Flint, it would raise a runtime exception. I think that's a reasonable compromise, because I can see easily that we might want to depend on 10+ libraries, but each of them typically is only used in some subfield that is very relevant to one user, but not 90% of the other users. I am open to all suggestions regarding this. Ondrej > > Regards, > Thilina > > > On Sun, Mar 9, 2014 at 10:54 PM, mario <mario....@gmail.com > <javascript:>>wrote: > >> >> csympy could use flint for matrices with multiprecision numbers >> >> >> On Sunday, March 9, 2014 4:26:28 PM UTC+1, Thilina Rathnayake wrote: >>> >>> Hi All, >>> >>> I would like to work on implementing a Linear Algebra Module for CSymPy >>> this summer >>> as a GSoC project. I like to focus mainly on Matrices and related >>> algorithms as they play >>> a central role in Linear algebra. >>> >>> I hope to implement following (rough) list of things related to matrices: >>> >>> 1. Basic Operations: >>> Addition, Scalar multiplication, transposition >>> Matrix multiplication >>> Row operations >>> Finding a Submatrix (by deleting specific rows and columns) >>> >>> 2. Square Matrices >>> Decompositions >>> Inverse >>> Eigen values, Eigen vectors and Determinants >>> Nullspace >>> >>> I haven't decided on the magnitude of the scope of this project but >>> since Matrices are a >>> well studied and implemented field in scientific and numeric computation >>> lots of references >>> can be found so we can start implementing right after we get the >>> requirements and designs >>> correct. >>> >>> Apart from SymPy matrices module, there are open source linear algebra >>> modules >>> implemented in c++ like Armadillo <http://arma.sourceforge.net/> and >>> it++ <http://itpp.sourceforge.net/4.3.1/>. Armadillo seems to be the >>> fastest among >>> these according to the benchmarks >>> here.<http://arma.sourceforge.net/speed.html>Armadillo focuses on numeric >>> computations. >>> Following two links provide useful information about implementing >>> numerical matrix >>> algorithms in C++. >>> >>> http://arma.sourceforge.net/armadillo_nicta_2010.pdf >>> http://itee.uq.edu.au/~conrad/misc/sanderson_templates_ >>> lecture_uqcomp7305.pdf >>> >>> Generalizing these functions to work with elements from a more general >>> field rather than >>> numeric fields won't be that hard. That way we can support symbolic >>> expressions as well. >>> We can create a matrix base class and derive matrices which can support >>> a specific >>> Field (domain) effectively, like matrices with rational elements or real >>> elements. >>> >>> Should we think about the implementation of about sparse/dense or >>> mutable/immutable >>> matrices as a part of this project? >>> >>> Regards, >>> Thilina >>> >> -- >> 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 sympy+un...@googlegroups.com <javascript:>. >> To post to this group, send email to sy...@googlegroups.com <javascript:> >> . >> Visit this group at http://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/92d9c5ea-869d-4025-a3fa-53477a2eae67%40googlegroups.com<https://groups.google.com/d/msgid/sympy/92d9c5ea-869d-4025-a3fa-53477a2eae67%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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 sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/f2db844b-f8dd-44fa-9700-a4df59263c83%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.