Jump to content
Compatible Support Forums
Sign in to follow this  
news

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

Recommended Posts

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

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×