Hi, I took a look at the Numerical libraries we can use. Both FLINT and LELA are GPL licensed. So it's incompatible with the CSymPy's MIT license. Linbox is licensed under LGPL but it has hard dependencies like Givaro. Take a look at here.
http://linalg.org/linbox-html/dist.html The libdynd which Ondrej pointed out earlier is released under BSD license and I guess it's compatible with MIT license. https://github.com/ContinuumIO/libdynd/blob/master/LICENSE.md Any suggestions regarding this? Regards, Thilina On Tue, Mar 18, 2014 at 7:06 AM, Thilina Rathnayake <[email protected]>wrote: > Thank Ondrej for the reply. > > Yes, it seems like the we'll have to go back to the original proposal > > Regards, > Thilina > > > On Tue, Mar 18, 2014 at 5:05 AM, Ondřej Čertík <[email protected]>wrote: > >> On Mon, Mar 17, 2014 at 9:40 AM, Thilina Rathnayake >> <[email protected]> wrote: >> > Hi All, >> > >> > Thanks Ondrej, Mario and Someone for your valuable input. >> > >> > I accept that it's almost impossible for us to beat a good library like >> > Flint >> > and it's really unlikely that we will not have support for it in >> future. So >> > definitely >> > we should use it (or any othert library) to boost our performance. When >> > doing >> > so we should make sure that CSymPy doesn't become something like sage or >> > become difficult for a developer to work on it as Ondrej has pointed >> out. >> > So the bottom line is we should reuse whenever we can without >> sacrificing >> > the >> > maintainability, extensibility and user-friendliness. So I am going to >> > change my >> > initial proposal a bit and propose the following. >> > >> > How about writing a wrapper this summer for flint (or any other >> library we >> > select) >> > to be used with CSymPy? I guess Flint is written in C. Other >> alternatives we >> > have >> >> Flint already has a C++ wrapper, see >> http://www.flintlib.org/features.html. >> So we would just use it. >> >> > are LELA and LInbox both written in C++. Latter two libraries support >> > symbolic >> > manipulation also. We can decide which library we should select and I >> would >> > love >> > to know what are your choices. Mario has already sided with Flint. I >> studied >> > Linbox >> > and LELA quite a bit but not in the perspective of writing wrappers on >> top >> > of them. >> > So I'll have to take a look at them again. >> > >> > In case we don't need to make this a hard dependency, as a fall-back >> > implementation I could do our own implementation for Basic as Ondrej >> pointed >> > out >> > earlier. Since all the other types like Number, Integer, Rational, >> Function >> > are derived >> > from Basic, all of these types can be used with this implementation. We >> can >> > also >> > provide specialized versions of the Matrices and algorithms to these >> types. >> >> Flint doesn't provide matrices for symbolic expressions. So I would >> stick with your original >> proposal to write good linear algebra functionality for symbolic >> types. I don't see any easy way around this. >> >> Ondrej >> >> > >> > I would like to know your opinions on this. >> > >> > >> > >> > Regards, >> > Thilina >> > >> > >> > On Mon, Mar 17, 2014 at 1:21 PM, mario <[email protected]> wrote: >> >> >> >> My opinion is that it would be great if CSymPy depended only on Flint >> and >> >> its extensions; >> >> for what is missing in it one could make other extensions to it or >> write >> >> code >> >> directly in CSymPy. The reason is that there are costs in using many >> >> libraries; >> >> one must learn how to use them; there is often a slowdown in >> converting >> >> to the required >> >> data structures. >> >> >> >> >> >> >> >> 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 and it++. Armadillo seems to be the >> >>> fastest among >> >>> these according to the benchmarks here. 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 [email protected]. >> >> To post to this group, send email to [email protected]. >> >> 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/a1c958b6-5752-4314-ba3d-63f18f2cb5a2%40googlegroups.com >> . >> >> >> >> 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 [email protected]. >> > To post to this group, send email to [email protected]. >> > 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/CAPnoRorOzkCimivJfc5a2ppK3rxC_Wea%3DYkEZdodf6%2BgAz1aCQ%40mail.gmail.com >> . >> > >> > 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 [email protected]. >> To post to this group, send email to [email protected]. >> 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/CADDwiVB8OxForfZ8BqJ6dwLKVT0HxqhaWh61y4LQhVNfU1vP7Q%40mail.gmail.com >> . >> 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 [email protected]. To post to this group, send email to [email protected]. 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/CAPnoRooxtKyx%2BM7n-3%2B0zdKCC3ZS_x9uadg%2BnWqvQGsUjusj%3DA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
