news 28 Posted July 30, 2009 Genius is a general purpose calculator with many advanced capabilities. To find out more go to: http://www.jirka.org/genius.html 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 undefine. * 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 used. * 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 genius * Updated Mersenne stuff for the newest data from mersenne.org 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 http://download.gnome.org/sources/genius/1.0/ ftp://ftp.5z.com/pub/genius/ http://www.jirka.org/genius.html 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 -- Jiri (George) Lebl, http://www.math.uiuc.edu/~jlebl/ or http://www.jirka.org/ The only thing that interferes with my learning is my education. -- Albert Einstein _______________________________________________ Share this post Link to post