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/

Reply via email to