Hi all, It is with pleasure that we release Nemo, a new computer algebra package we've been working on that uses the Julia programming language.
The official announcement was made yesterday at the computer algebra minisymposium at the annual meeting of the German Mathematical Society (DMV) in Hamburg [1]. We are releasing Nemo 0.3, the first really public release of Nemo. http://nemocas.org This represents joint work of myself, Claus Fieker, Tommy Hofmann, Fredrik Johansson and Oleksandr Motsak. What we have so far is a generic rings mechanism (polynomial rings, residue rings, fraction fields, power series, matrices), plus specific rings implemented by C libraries, Flint [6], Antic [7], Arb [8], Pari [9], GMP [10]/MPIR [11], providing integers, rationals, integers mod n, finite fields, padics, real and complex ball arithmetic, number fields and maximal orders and ideals thereof. We envision Nemo eventually covering much of computer algebra (in the limited sense of the word) and number theory. (Of course, Julia itself is already very capable in the numerical area.) Nemo's real strengths are in mid-range algorithms, where there is considerable genericity, but where performance is also required. For example, one of our aims in the coming months is to implement a very generic Hermite Normal Form over quite general Euclidean domains and benchmark it. Julia is of course a high level language, but is performant over a very wide range, from things that are typically done in C or even assembler, right through to things typically done in Ruby, Perl or Python. See the Nemo website for: * benchmarks: http://nemocas.org/benchmarks.html * documentation: http://nemocas.org/downloads.html * devel list and repository: http://nemocas.org/development.html Nemo is known to work on Ubuntu, Fedora, Windows 32 and 64 bit (natively). (It should in theory work on OSX, but this is untested. Bug reports/patches welcome. See deps/build.jl) You will need Julia-0.4-rc2 and then just follow the instructions on our website to obtain and build Nemo. http://nemocas.org/downloads.html Claus Fieker and Tommy Hofmann have also been building a package for algebraic number theory on top of Julia and Nemo, called Hecke, which may be of interest to some people: https://github.com/thofma/hecke As far as interfacing to Nemo from other projects, this should ultimately be possible, I believe. There is already some Python-Julia cooperation and Julia can be embedded in C, I believe. IntelLabs also produced at one point a Julia to C compiler, though I don't know the current status of that. There are bound to be rough edges and bugs in Nemo, and there is much to be added. But we think the time has come to start thinking about student projects using Nemo, graduate students implementing their thesis in Nemo and contributors getting involved in the project generally, bearing in mind what is in Nemo so far and what is not, and bearing in mind what the strengths and weaknesses are. Indeed, Nemo/Hecke have already been used for student projects and at least two more are planned. One of the next big steps is to integrate Singular [2] in Nemo (we also later plan to interface with Gap [3] and Polymake[4]). The Singular wrapper is being developed by Oleksandr Motsak as we speak. We also plan to implement many more generic matrix algorithms into our generics system and probably extend the quite limited Pari [5] interface. As with any Open Source project, we welcome contributors. Please sign up for our development list if you are interested or have questions. Finally, I just want to take this opportunity to thank the Julia developers for the incredibly hard work they are doing on the Julia language. We have really benefited greatly from the innovation you guys have been putting into the language, and the extremely rapid pace of development. Bill Hart. [1] http://www.math.uni-hamburg.de/DMV2015/minisymposiaschedule.html [2] http://www.singular.uni-kl.de/ [3] http://www.gap-system.org/ [4] http://www.polymake.org/doku.php [5] http://pari.math.u-bordeaux.fr/ [6] http://flintlib.org/ [7] https://github.com/wbhart/antic [8] http://fredrikj.net/arb/ [9] http://pari.math.u-bordeaux.fr/ [10] https://gmplib.org/ [11] http://mpir.org/