ANNOUNCE: GENIUS 1.0.7 the "Yay for new syntax" release

From: Jiri Lebl <>
Date: Wed, 29 Jul 2009 16:19:01 -0500

Genius is a general purpose calculator with many advanced capabilities.
To find out more go to:

I was showing genius to a friend who works in dynamics and he was interested
in changing precision. So I said, yeah genius can do that and at that point
I found a bug. So I fixed this problem and was going to do a release but
figured I'd add a few functions to justify a new release. I wrote up a bunch
of functions for computing the trigonometric Fourier series and at that point
I realized that the current scoping rules were not good (not really buggy,
but not well designed). I tried implementing saner scoping rules but those
were terribly inefficient, so the scoping rules stayed as is: function sees
all variables visible from the context where the function is executing. I
however added true local variables, that is variables visible from only the
local context. OK, then I looked through the way variables are substituted
when a function is returned, it was done in a very inefficient way. And
there I realized there was one more issue with scoping that was hard to
solve. So I added a new syntax for explicitly specifying the private
dictionary of any function. During the course of all this I also fixed a
bunch of rather obscure bugs.

There are almost no UI changes except that the plot windows no longer act as
dialogs which was REALLY obnoxious since metacity keeps dialogs on top of
their parents (which I find obnoxious on its own). Maybe the only other new
change is that I'm requiring glib and gtk 2.10 now. I figure those have been
out for long enough by now.

In any case, Genius is one of the oldest GNOME projects, it has been the
original GNOME calculator before I got wild ideas about it doing absolutely
everything. It is programmable, has a powerful language and handles many fun
features including support for matrices, rational numbers, and nice 2D and 3D
plotting. The GUI version requires GNOME2 (at least glib2 if you don't want
a GUI) a recent enough GMP library and the MPFR library. You can still use
the command line version if you prefer non-gui interface.

Here are the news in 1.0.7:

* SYNTAX: Added a possibility to exactly specify which variables are copied
  into a function's extra dictionary when it is being returned.
    E.g. "`(x) [x0] = (x-x0)" will copy x0 from the current context. This
  is a lot more efficient than the current behaviour which tries to copy
  everything referenced.
* SYNTAX: Add "local" variables by specifying "local x,y,z" or "local *" as
  the first statement in a function. Local variables are not visible from
  higher contexts (functions called within)
* CHANGE: all system parameters are now protected and cannot be redefined
  using the "parameter" keyword
* Add UserVariables, UndefineAll, ProtectAll, and add Undefine as an alias to
* Add trigonometric Fourier series related functions:
  NumericalFourierSeriesFunction, NumericalFourierSineSeriesFunction,
  NumericalFourierCosineSeriesFunction, FourierSeriesFunction,
  NumericalFourierSeriesCoefficients, NumericalFourierSineSeriesCoefficients,
  NumericalFourierCosineSeriesCoefficients, PeriodicExtension,
  EvenPeriodicExtension, OddPeriodicExtension
* Fix changing floating point precision!
* Fix uninitialized variable in graphing (Matthias Drochner)
* Improve variable substitution for returned functions to be more efficient.
  Slightly changes behaviour with respect to global functions and variables
* Plot windows now not treated annoyingly as dialogs
* Fix compilation/decompilation of all function attributes.
* Parse/Evaluate with a syntax error at end of string no longer terminate
* Updated Mersenne stuff for the newest data from and
  fix MersennePrimeExponents
* Fix opening new files from the command line.
* Update the gel library to use the new language features.
* Various other minor fixes
* Translation updates (Philip Withnall, Jen Ockwell)
* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Illinois at Urbana-Champaign

Genius is in Ubuntu, Debian, Fedora, GARNOME and probably other distribution
repositories, so check those. Usually you wan to install two packages:
genius and gnome-genius (perhaps also gnome-common on some distros). Of
course it will be a little bit before this version hits those servers ...

Have fun,


Jiri (George) Lebl, or
The only thing that interferes with my learning is my education. --
Albert Einstein
Received on Wed Jul 29 2009 - 16:19:29 CDT

This archive was generated by hypermail 2.2.0 : Sun Apr 17 2011 - 21:00:02 CDT