Support the UN World Food Programme

Genius icon Genius Mathematics Tool and the GEL Language

[What is it] [Manual/Documentation] [wiki] [Help out with Genius] [News] [Mailing List] [Requirements] [Download] [Screenshots]

What is it

3D surface plot Genius is a general purpose calculator program similiar in some aspects to BC, Matlab, Maple or Mathematica. It is useful both as a simple calculator and as a research or educational tool. The syntax is very intuitive and is designed to mimic how mathematics is usually written. GEL is the name of its extention language, it stands for Genius Extension Language, clever isn't it? In fact, many of the standard genius functions are written in GEL itself.

What can it do?

An example expression can look like:
30*70 + 67^3.0 + ln(7) * (88.8/100) + |sin(40)| - 3i

Or perhaps to sum the first 70 terms of the harmonic series one would do:
sum n=1 to 70 do 1/n

To define a function that takes the square of a number and adds one, you could do:
function f(x) = x^2 + 1

To numerically integrate f from -1 to 1:
NumericalIntegral(f, -1, 1)

To factorize a number into primes:
Factorize(123456789)

To solve a linear system Ax=b:
SolveLinearSystem(A,b)

Given y' = x^2 + y, with initial condition y(0) = 0, to find y(1) using Runge-Kutta with 20 increments:
RungeKutta (`(x,y) = x^2 + y, 0, 0, 1, 20)

The original goal of Genius was to build a better BC then BC. That goal has been attained and surpassed long ago with Genius not having much in common with BC anymore. It is now venturing into the territory of Matlab/Octave, Maple and Mathematica, though it is not quite any of these. I do not think it will ever be a replacement for any, but it is already a very good tool for experimentation, and I have used it in research many times.

What does Genius stand for?
I have no idea ... the G could be GNOME or GNU. I think it used to stand for something and I forgot. So now it's just Genius. Originally the window title was "GnomENIUS Calculator" but that just sounded stupid, so that's not it either.

And of course Genius is free software, released under the GNU General Public License.

Future? That is, what will Genius do at some point in the future:

Acknowledgements: Some of the development was partially supported by NSF grant DMS 0900885 and the University of Illinois at Urbana-Champaign.

Manual / Documentation

The manual is written in DocBook and is available for browsing in the GNOME help browser directly from the program. Enter through the Help menu, or type manual on the command line. Typing help FunctionName will bring up the manual entry for that function.

There are some alternatives online (always for the newest version):

You can also check the function listing of a recent version. This list is just the output of the help command of a recent version. The manual above has much more information about the functions, even some links to Mathworld, Planetmath and Wikipedia.

Wiki

I set up a sort of a Genius Wiki on Google Sites. I can't let anyone just willy nilly edit things (google doesn't allow that, and it might be a bad idea anyway). Let me know if you want to have write access. If you have some useful tips/tricks or GEL code to share.

Help out with Genius

There are a lot of things that can be done for genius, and I only have very limitted time. There are many ways you can help with genius:

News

NEWS file (what changed between releases)

December 23rd 2009:

Release 1.0.9. Just a few bugfixes, see the NEWS file above.

November 10th 2009:

Release 1.0.8. Just a few bugfixes (one really annoying one where the return was misplaced on terminal display with newer vte).

July 29th 2009:

Release 1.0.7. True local variables, explicit specification of private dictionary, Fourier series functions, parameters always protected, and other fixes and minor new features. See the NEWS above.

March 15th 2009:

Release 1.0.6. Finally purge those libgnome(ui) demons. Also a bunch of plotting improvements, some optimizations and a bunch of fixes. See the NEWS above.

Feb 10nd 2009:

Released 1.0.5. Fixed a buffer overrun (thanks to Simon Munton), fix a few memory leaks (one reasonably bad one), fix EulersMethod and it's documentation, and allow EulersMethod and RungeKutta solve systems as well.

Feb 8nd 2009:

Released 1.0.4. Try the slopefield / vectorfield plots

Feb 2nd 2009:

New release will be coming shortly. A bunch of good stuff accumulated over the past half a year. Mostly, I have just finished the slopefield and vectorfield plotting.

Jun 10th 2008:

Release 1.0.3. Fixes, optimizations, few new functions, few improvements to GUI.

Older news

Mailing List

To subscribe to the Genius mailing list, send a message to minimalist@5z.com with a subject of "subscribe genius-list".

Here is the archive of this list

Requirements

Genius is a program for UNIX or Linux type computers, so you need one of those. I do all my development on Ubuntu Linux nowdays, so you will probably have most luck with that or any other GNU based system. It is also possible to build under Mac OS X (see instructions) although I don't have access to Mac OS X so I can't verify that every release will in fact build cleanly there.

Genius includes a GNOME GUI frontend which requires GNOME2 and VTE (part of GNOME 2.2 and onward). Any recent Ubuntu, RedHat or Fedora Core or any other distro that has recent GNOME will do. Read below about MPFR and GtkSourceView. There are some RPMS available and perhaps there will be debs for Ubuntu. RPMS should build with rpmbuild using the tarball as it includes a specfile. If you don't have GNOME you can build the command line only version which does however still require at least glib2.

Genius requires readline. Get the newest version if you are having troubles.

Genius also requires the excellent GMP library for its number manipulations. This is a very optimized, multiple precision floating point and arbitrary precision int library which is just blazing fast and genius owes a large part of its speed to GMP. (speed is a relative thing, it's faster then bc, but hell of a lot slower then octave which uses native types)

Another requirement is MPFR an extension of GMP, which Genius uses for all floating point computations. Ubuntu has recent mpfr it seems (libmpfr1 and libmpfr-dev). Genius used to include a version of MPFR, but this was a pain. New enough (2.2+) MPFR is now fairly commonly installed.

You also need GtkSourceView which should now be fairly common with new enough GNOME to get the syntax highlighting and such (it's not required, but is very nice to have).

Download

Source http://ftp.5z.com/pub/genius/ or http://ftp.gnome.org/pub/GNOME/sources/genius/
Ubuntu A package is in the universe repository (edgy and higher), so just install the package genius and gnome-genius (in hardy and higher). Search the Ubuntu packages site for genius and for gnome-genius.
Debian Install the package gnome-genius and genius. Search the Debian packages site for genius or gnome-genius.
Fedora/RPM Install the packages gnome-genius and genius on Fedora through yum. I guess this should work for other RPM based distros and is probably better than an RPM built from the spec file in the tarball. Look for the genius package on koji.fedoraproject.org.
GARNOME Genius should be part of the "hacker-tools."
FreeBSD Look for the genius package at FreshPorts.

You should also be able to build an RPM with "rpmbuild -ta <tarball>", but this has not been tested recently because I now run Ubuntu. It may be better to get an RPM from your distribution repository or perhaps the Fedora RPM above.

Screenshots

screenshot of 1.0.5 Screenshot of 1.0.5 showing a slope field with a few solutions drawn.

screenshot of 1.0.1 Screenshot of 1.0.1 showing a parametric plot of the butterfly curve.

screenshot of 0.6.2 Here's one of 0.6.2 (CVS Aug 4 '04) showing the new surface plotting using GtkExtra-2.

screenshot of 0.5.8 Here's one of 0.5.8 (CVS Mar 23 '04, 0.6.0 is very similar to this) showing the line plot improvements

screenshot of 0.5.7 Here's one of 0.5.7 and the source code editting using GtkSourceView

Here are some even older ones:

Here's one of 0.5.3 (CVS Feb 28 '03) and the very basic graph support

Here's one of 0.5.2 (actually doing my crypto homework right there :)

Here's one of 0.4.1

For real nostalgia, here are some pics from 1998. Here is when it was still part of GNOME 0.13, first standalone release 0.1, and 0.2.0. Do note how you could switch between infix, postfix and prefix notation. No you can't do that anymore because that was stupid.


Comments? jiri...@gmail.com

Valid HTML 4.01!