GSoC/GCI Archive
Google Summer of Code 2015

lmonade: scientific software distribution

License: GNU General Public License version 3.0 (GPLv3)

Web Page: http://wiki.lmona.de/get_involved/gsoc

Mailing List: lmnd-devel@googlegroups.com

Quick links: lmonade homepage, lmonade GSoC page, project ideas

As a mentoring organization, lmonade promotes ideas to improve various open source/free scientific software, especially computational algebra and image processing projects.

Scientific software poses many interesting challenges that provide a concrete introduction to data structures and algorithms as well as various application areas. Proposed projects are usually immediately useful in research, yet they still serve as a good starting point for new developers. We hope that seeing the results will encourage contributors to stick around and help with more advanced problems later on.

lmonade is an umbrella organization for the following projects:

[IMAGE http://wiki.lmona.de/get_involved/gsoc?action=AttachFile&do=get&target=lmonade.png]

lmonade

lmonade is a platform for development and distribution of mathematical software. It creates an environment where software can be installed on various GNU/Linux distributions and OSX without administrative rights. Development of certain mathematics packages under this environment is also supported.

Website | lmnd-devel@googlegroups.com | #lmnd on Freenode

 

[IMAGE http://wiki.lmona.de/get_involved/gsoc?action=AttachFile&do=get&target=flint.png]

FLINT

FLINT is a C library for number theory. As a part of Sage and Singular, it provides fast arithmetic and factorization for univariate polynomials over the integers and finite fields. For most of this functionality, FLINT has the fastest implementation available, among commercial and open source software packages.

Website | flint-devel@googlegroups.com | #lmnd on Freenode

 

fplll

fplll

fplll contains several algorithms on lattices that rely on floating-point computations. This includes implementations of the floating-point LLL reduction algorithm, offering different speed/guarantees ratios. It contains a 'wrapper' choosing the estimated best sequence of variants in order to provide a guaranteed output as fast as possible. In the case of the wrapper, the succession of variants is oblivious to the user. It also includes a rigorous floating-point implementation of the Kannan-Fincke-Pohst algorithm that finds a shortest non-zero lattice vector, and the BKZ reduction algorithm.

Website | fplll-devel@googlegroups.com | #lmnd on Freenode

 

[IMAGE http://wiki.lmona.de/get_involved/gsoc?action=AttachFile&do=get&target=fricas_logo.png]

FriCAS

Fricas is a general purpose system for doing mathematics by computer. It is a descendant (fork) of Axiom. It is especially useful for symbolic calculations, mathematical research and for the development of new mathematical algorithms. FriCAS has a strongly-typed high-level programming language for expressing a mathematical concepts. Over 1,000 mathematical domains and categories are collected in the FriCAS Library.

Website | fricas-devel@googlegroups.com | #lmnd on Freenode

 

[IMAGE http://old.ilastik.org/ilastik-logo_name_tagline.png]

ilastik

ilastik is a simple, user-friendly tool for image classification and segmentation that aims to enable non-experts to apply machine learning algorithms to their image processing problems

Website | ilastik-gsoc@ilastik.org | #ilastik on Freenode

 

[IMAGE http://wiki.lmona.de/get_involved/gsoc?action=AttachFile&do=get&target=singular_only_logo.png]

Singular

Singular is a computer algebra system for polynomial computations, with special emphasis on commutative and non-commutative algebra, algebraic geometry, and singularity theory.
Singular provides basic multivariate polynomial data structures in Sage as well as most of the advanced commutative algebra functionality. Macaulay2 relies on Singular for multivariate polynomial factorization.

Website | libsingular-devel@googlegroups.com | #lmnd on Freenode

 

[IMAGE http://wiki.lmona.de/get_involved/gsoc?action=AttachFile&do=get&target=LinBox-logo.png]

LinBox

LinBox is a C++ template library for exact, high-performance linear algebra computation with dense, sparse, and structured matrices over the integers and over finite fields.

Website | linbox-devel@googlegroups.com | #lmnd on Freenode

 

Projects

  • Factorization of LODOs in FriCAS - the van Hoeij algorithm This project will lead to an implementation of Mark van Hoeij's algorithm for factoring of linear ordinary differential operators with rational function coefficients in FriCAS (using Spad language), offering at least computation of generalized exponents given factoring routine for polynomials and "easy" cases of factorization given in chapter 3.5 of van Hoeij thesis.
  • Implement BLAS wrappers in FLINT to improve linear algebra performance FLINT implements matrix multiplication using integer arithmetic. The Basic Linear Algebra Subprograms (BLAS) define a set of fundamental operations on vectors and matrices which can be used to create optimized higher-level linear algebra functionality. The goal of this project is to allow FLINT to use an external floating-point BLAS library to multiply matrices over finite fields, integers and rationals [High Performance GEMM-based Level 3 BLAS : Kagstrom, Ling and Loan]
  • Integer Factorisation In Flint: Self Initialization Quadratic Sieve The aim of this project is to add a robust implementation of SIQS(Self initialization Quadratic Sieve) algorithm, which is a general purpose integer factorisation algorithm, to FLINT. FLINT stands for Fast Library for Number Theory, and comes under 'lmonade: scientific software distribution' which is an umbrella organization for various projects.
  • Integer factorization in FLINT: the Self Initializing Quadratic Sieve Currently FLINT lacks a robust module for big integer factorization. For small numbers, there exists a very fast implementation of the William’s p+1 factoring algorithm, which can be used. However there is no such implementation for bigger numbers. The target of my project would be to implement a quadratic sieve and optimize it so that it is capable of factoring a 60 digit number in 8 seconds on a single core, and a 100 digit number in under a day.
  • Primality testing in Flint: the APR-CL algorithm Primality testing and factoring among the most important problems in arithmetics. This project is about the first of them. For many areas (cryptography, for example) we need fast and deterministic method for test large integer N for primality. APR-CL with "nearly" polynomial complexity (O(ln(N)clnlnlnN)) perfect for this. Our goal is to prove primality of 100 digit primes in under 0.1 seconds.