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.

Reply via email to