[What is it] [Genius in Use] [Manual/Documentation] [Wiki] [Help out with Genius] [News] [Mailing List] [Requirements] [Download] [Screenshots]
Genius is a general purpose calculator program similar 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 extension 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
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:
To solve a linear system Ax=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:
Acknowledgments: During some of the development the author (Lebl) was partially supported by NSF grant DMS 0900885, University of Illinois at Urbana-Champaign, University of California, San Diego, University of Wisconsin-Madison, Oklahoma State University.
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.
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.
There are a lot of things that can be done for genius, and I only have very limited time. There are many ways you can help with genius:
August 26th 2014:
Release 1.0.18. Allow plotting point clouds, new functions to improve animations, improve vector building notation with floats, add functions for listing variable values and tables of function values, errors while plotting go to the console rather than a dialog for a less annoying experience. Also several other new functions and improvements, and lots of fixes. See NEWS above.
June 25th 2013:
Release 1.0.17. Plotting uses cairo (and is antialised) by using updated GtkExtra. Improvements to line plots including autoscaling the y axis by default. PDF export. Lots of of fixes and other minor improvements all over. See NEWS file above for more details.
December 17th 2012:
Release 1.0.16. Plotting improvements, new functions, lots of fixes, translation updates. See NEWS file above.
March 27th 2012:
Release 1.0.15. Minor fixes, enhancements, and lots of translation updates. See NEWS file above.
July 29th 2011:
Release 1.0.14. Minor bug fixes.
July 28th 2011:
Release 1.0.13. Minor fixes and ehnacements, also lots of translations updates including the manual. See NEWS above.
To subscribe to the Genius mailing list, send a message to firstname.lastname@example.org with a subject of "subscribe genius-list".
Here is the archive of this list
Genius is a program for UNIX or Linux type computers, so you need one of those. I do all my development on Fedora Linux (or Ubuntu on some machines) so you will probably have most luck with that or any other GNU based system. It is (or was some time ago) 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 Linux distribution should work. Read below about MPFR and GtkSourceView. RPMS should build with rpmbuild using the tarball as it includes a spec file. If you don't have GNOME you can build the command-line-only version, which requires at least glib2 in addition to readline, GMP, and MPFR.
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. 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 to get the syntax highlighting and such (it's not required, but is very nice to have).
|Source||http://ftp.5z.com/pub/genius/ or http://ftp.gnome.org/pub/GNOME/sources/genius/|
|Ubuntu / Mint||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/RedHat 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.|
|OpenSUSE||Install the packages gnome-genius and genius. To see what version they are up to, search for genius and gnome-genius on software.opensuse.org.|
|GARNOME||Genius should be part of the "hacker-tools."|
|FreeBSD||Look for the genius package at FreshPorts.|
|NetBSD||Look for the genius package at pkgsrc.|
|Gentoo||Look for the genius package.|
You should also be able to build an RPM with "rpmbuild -ta <tarball>", but this has not been tested recently. It may be better to get an RPM from your distribution repository or perhaps the Fedora RPM above.
Screenshot of 1.0.5 showing a slope field with a few solutions drawn.
Screenshot of 1.0.1 showing a parametric plot of the butterfly curve.
Here's one of 0.6.2 (CVS Aug 4 '04) showing the new surface plotting using GtkExtra-2.
Here's one of 0.5.8 (CVS Mar 23 '04, 0.6.0 is very similar to this) showing the line plot improvements
Here's one of 0.5.7 and the source code editing 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.
This article is translated to Serbo-Croatian language by WHG Team.
This article is translated to Russian language by Jim Jerginson from PortableComponentsForAll.