Hi All,

I studied about a fork of linbox called
LELA<http://www.singular.uni-kl.de/lela/>which is used in Singular. It
uses
the following strategy when creating and manipulating matrices. Though the
process is somewhat complicated, I think it's okay since because the user
will
be calling these functionalities through python wrappers and we can provide
convenient APIs for the user to get his job done .

1. Define the Ring which the elements of the Matrix/Vector belong to -

    First we should define a ring from which the elements should be taken.
    We can provide inbuilt rings like Integers and Rationals. We can also
support
    modular rings which contain integers modulo some number. To support more
    general rings, we can provide a wrapper which will take any type that
implements
    basic arithmetic operations (built in or user defined).

    Defined rings can then be used to store the elements belong to the
ring, to do
    arithmetic operations on the elements of the ring,  to perform various
checks like
    similarity of elements.

2. Define Vectors/Matrices over the ring

     Next we can define a Matrix or  a vector using the elements from the
defined ring.
    These can be Sparse or Dense and the algorithms used by these structure
will
    differ depending on that. Various methods can be provided to
initialize, iterate and
    perform basic Vector and Matrix arithmetic.

3. Set of Higher level algorithms can be provided for these matrices and
vectors separately
    like finding determinant, rank, decompositions and etc..

I omitted a lot of implementations details and the nature of the API we
should provide.
That should be discussed separately. But as an Architecture for the module,
Is this okay?

You can read more about LELA's architecture
here<http://www.singular.uni-kl.de/lela/tutorial.html#id421135>
.


Regards,
Thilina


On Mon, Mar 10, 2014 at 9:57 AM, Tim Lahey <[email protected]> wrote:

> Yes, Linbox is probably your best bet for symbolic linear algebra code.
>
> Cheers,
>
> Tim.
>
> On 2014-03-10, at 12:24 AM, Thilina Rathnayake <[email protected]>
> wrote:
>
> > Hi,
> > Thanks Tim for the heads up. I think Linbox currently offers symbolic
> > linear algebra algorithms so we can refer it.
> >
> >  http://www.linalg.org/
> >
> > Regards,
> > Thilina
> >
> >
> > On Mon, Mar 10, 2014 at 9:26 AM, Tim Lahey <[email protected]> wrote:
> > Keep in mind that symbolic linear algebra is quite different than
> numerical linear algebra. A lot of the algorithms aren't designed for
> symbolic matrices.
> >
> > Cheers,
> >
> > Tim.
> >
> >
> > On 9 Mar 2014, at 23:49, Thilina Rathnayake wrote:
> >
> > I am not sure BLAS or LAPACK supports arbitrary precision arithmetic. If
> not
> > we have to go with FLINT.
> >
> > Regards,
> > Thilina
> >
> >
> > On Mon, Mar 10, 2014 at 8:51 AM, Thilina Rathnayake
> > <[email protected]>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.
> >
> > Regards,
> > Thilina
> >
> >
> > On Sun, Mar 9, 2014 at 10:54 PM, mario <[email protected]> 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 [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/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 [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/CAPnoRopfocWKWOMg6SH2Zg9h4fadkjdY1eO8W%2B8s6tAgLgu%3D9A%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/1E55FAB0-F118-4450-B0BF-5550B55D42C8%40gmail.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/CAPnoRop%2Bd6G6LhbUvV-ujgF3MXnRz5wd7Ya2PJ1f1KE51%3D-bBA%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/74BEC21E-9CBD-45D6-84A2-73FF8FD0C981%40gmail.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/CAPnoRoqVmbHEvgRym_waY0kVZ9dwj3vsfL7jbvTLuaGTFd6fuA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to