Changes to 1.0.20

* Add more sizes of icons including SVG, and add Keywords to the .desktop file
* Documentation updates
* Fix PeriodicExtension function
* ErrorFunction (erf) is using MPFR for real values so it is far more precise
  and faster
* The Fourier series example is no longer using a hand coded graph and hand
  computed series, so it can now be easily modified to show series for
  different functions
* Fix GCC 5 compilation
* A couple of minor fixes in the plotting code including one possible crasher
* Translation updates (Wolfgang Stöggl, Marek Černocký, Maria Mavridou,
  Мирослав Николић, Miguel Rodríguez Núñez, Daniel Mustieles, Piotr Drag,
  Rafael Ferreira)

* During making of these changes the author (Jiri) was partially supported by
  NSF grant DMS 1362337 and the Oklahoma State University

Changes to 1.0.19

* New menu: Examples.  These are annotated programs that show some
  mathematical concept.  Generally taken from the classes I have been teaching.
  They are installed under prefix/share/genius/examples/ and are mostly using
  graphics so only work in the graphical GNOME/GTK version
* New plotting functions: SurfacePlotDrawLine, SurfacePlotDrawPoints,
  SurfacePlotClear, PlotWindowPresent
* New rotation animation in the surface plot window
* Fix string constants from compiled library starting with 'E' (funky bug)
* A few fixes
* Translation updates (Miguel Rodríguez Núñez, Daniel Mustieles,
  Wolfgang Stöggl, Marek Černocký)

* During making of these changes the author (Jiri) was partially supported by
  NSF grant DMS 1362337 and the Oklahoma State University

Changes to 1.0.18

* New general functions: KroneckerProduct (alias TensorProduct), NewtonsMethod,
  HalleysMethod, LambertW, LambertWm1, NonzeroColumns, NonzeroElements,
  DisplayVariables, PrintTable, SetElement, SetVElement
* New plotting functions: PlotCanvasFreeze/PlotCanvasThaw to improve flicker
  if doing animations with genius, and LinePlotDrawPoints function to draw just
  points without the line
* While plotting, errors are no longer forced into a dialog, and presence
  of errors is indicated in the graph window below the graph
* Allow setting color in LinePlotDrawLine with RGB vector.
* When the vector building notation is done with floats and the final
  number is within 2^-20 times the step size of the goal,
  assume there were roundoff errors and still add it, just like for loops,
  so something like 1.0:0.1:3.0 now works
* Implement subsecond precision in wait function.
* Fix memory corruption error triggered in nested floating point
  for loops with a floating point step
* Few minor bug fixes and fix some more compile warnings in gtkextra
* Streamline the compiled file format (saves about 30kb)
* A few improvements to the documentation (yelp sucks donkeyballs!
  Just had to say that).
* Translation updates (Rafael Ferreira, Marek Černocký, Daniel Mustieles,
  Wolfgang Stöggl, Miguel Rodriguez Nuñez, Piotr Drąg, Wylmer Wang,
  Dimitris Spingos, Enrico Nicoletto, Matej Urbančič)

* During making of these changes the author (Jiri) was partially supported by
  NSF grant DMS 1362337 and the Oklahoma State University

Changes to 1.0.17

* Better precision for graphs especially when zoomed it a lot, and make font
  smaller if needed
* Line plots and parametric plots now allow "fit dependent axis" automatically
  when y limits are unspecified.  And this is the default in the UI
* Add export of graphs to PDF directly
* Line plot step size is adaptive, also line plots now detect jumps and do not
  draw a connecting line, try plotting UnitStep for example
* Use arrow keys to move around a line plot
* left-right arrow keys rotate surface plot
* All plots are now antialiased on the screen (due to GtkExtra update and
  cairo usage).
* Update internal GtkExtra to 3.0.5, and forward port all our changes/fixes
  (this gets us closer to supporting GTK+3 at some point)
* Completion for "help on function" in the GUI
* Fix FindRootBisection and FindRootMullersMethod
* Factors is now a lot faster on very large numbers (as fast as Factorize)
* Fix placement of labels on surface plots
* A few small fixes and updates to the documentation
* A few minor bugfixes
* Update mersenne primes (new one is known)
* Translation updates (Daniel Mustieles, Marek Černocký, Dimitris Spingos,
  Jiro Matsuzawa, Kjartan Maraas, Martin Srebotnjak, Matej Urbančič,
  Gil Forcada, Alexandre Franke, Joe Hansen, Miguel Rodríguez)

* During making of these changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Wisconsin-Madison

Changes to 1.0.16

* Add SurfacePlotData and SurfacePlotDataGrid functions to draw arbitrary
  surface data, to allow more complicated 3d plots and 3d plots from data.
* Add LinePlotDrawAxisLabels and SurfacePlotDrawLegends parameters and
  add corresponding UI checkboxes 
* Add ExportPlot function to export the current contents of the plot window
  to a file from GEL
* Surface plot now allows "fit dependent axis" automatically when
  z limits are unspecified.  And this is the default in the UI
* Add sinc, BesselJ0, BesselJ1, BesselJn, BesselY0, BesselY1, BesselYn functions
* Plot window slightly bigger (700x500 now) and there are wider
  side margins in the lineplot (2D) version to make tick labels always fit,
* In both 2D and 3D plots, tick labels now use scientific notation when
  needed to avoid ugly labels
* In surface plot the gradient always shows only the range of the function, so
  color is more useful when zoomed out.
* Simpler output when typing "help foo" when foo is neither defined nor
  documented.
* When for/sum/prod loops are in terms of floating point numbers and
  the final number is within 2^-20 times the step size of the goal,
  assume there were roundoff errors and still execute the body
* Handle wider matrices than 2^15 columns in expansion
* Fix flicker when plotting surfaces to allow animations with 3d plots
* Fix possible uninitialized crash when reading badly formed standard library
  (should never happen, but ...)
* Fix LinearRecursiveSequence and allow it to take vector for n
* Fix crash on uninitialized variables in conjugate transpose
* Fix crash on extreme zoom out or zoom in of a graph
* Fix derivatives of Im and Re
* Fix file chooser dialogs not starting in current directory
* Avoid double error about uninitialized variables
* Spelling fixes and documentation fixes (me, LucPionchon)
* Require MPFR at least 2.3.0
* Translation updates (Wolfgang Stoeggl, Daniel Mustieles, Matej Urbančič,
  Marek Černocký, Aleksej Kabanov, Andika Triwidada, Yuri Myasoedov,
  Miguel Rodriguez, Jiro Matsuzawa, Gustavo Jasso Ahuja, Bruno Brouard)

* During making of these changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Wisconsin-Madison

Changes to 1.0.15

* New functions CurrentTime, MacaulayRep, MacaulayLowerOperator, MacaulayBound.
* Fix rational powers of negative numbers, and exact negative rational powers.
* Fix zooming in graphs using the mouse when the functions take long to run
* Accept log instead of ln for symbolic derivative when used with only
  one parameter
* Translation updates (Maria Majadas, Juan Matias Olmos, Daniel Mustieles,
  Gustavo Jasso, Jiro Matsuawa, Marek Cernocky, Bruno Brouard, Matej Urbanic,
  Mario Blattermann, Juan Carlos Vallejo Lopez, Christian Kirbach, Jorge
  Gonzales, Martin Strebotnjak, Wolfgang Stoggl, Kjartan Maraas, Fram Dieguez,
  Joe Hansen, Daniel Serbanescu)

* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Wisconsin-Madison

Changes to 1.0.14

* Fix some compilation warnings (Vincent Untz, me)
* Fix a crasher
* Optimize and quantize the new pngs for a smaller file
* Translation updates (Inaki Larranaga Murgoitio)

Changes to 1.0.13

* Add ShuffleVector
* Add increment and swapwith operators
* Require gtk 2.18 and fix up some deprecated function usage
* Slightly more cache friendly matrix traversal
* Optimize Combinations, Permutations, SortVector, IntegerQuotient
* Lots of tiny random optimizations
* Open help even if the URI api is broken
* Make pngs in the distribution smaller yet
* Make the compiled library slightly smaller
* Some more vector functions accept null properly
* Minor portability fixes
* Translation updates (Marek Černocký, Daniel Mustieles, Joe Hansen,
  Mario Blättermann, Joaquin Ignacio Aramendía, Yinghua Wang,
  Juan Matías Olmos, Matej Urbančič, Ask H. Larsen, Kenneth Nielsen)
  
* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of California, San Diego

Changes to 1.0.12

* Recently used files menu
* Only run ps2epsi on eps output if selected, it can be very slow and
  I've realized it's not commonly needed
* Fix handling of comment at the end of file when running from the IDE
* Fix handling of newlines in the lexer
* Fix CrossProduct
* Some self tests were missing in the distro (Matthias Drochner)
* Fix 64 bit build to be warning free
* Fix build on Make 3.82 (Dominique Leuenberger)
* Updated translations (Jorge Gonzales, Matej Urbancic, Marek Cernocky,
  Petr Kovar)

* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of California, San Diego

Changes to 1.0.11

* Build fix for some versions of ncurses (Stephan Hegel)
* Minor documentation updates

Changes to 1.0.10

* Allow changing variable names for all plotting functions
* Add SlopefieldTicks, VectorfieldTicks, LinePlotVariableNames, and
  SurfacePlotVariableNames, parameters
* Add AskButtons interactive function
* Add RungeKuttaFull, EulersMethodFull functions
* CHANGE: spelling fix: AuxiliaryUnitMatrix doesn't have two l's
* Support for setting legend on LinePlotDrawLine with a "legend" parameter
* Allow comparisons (== and !=) with null, treating it as an empty matrix
* Uses GIO instead of GnomeVFS (Jan de Groot)
* Fix compilation without gtksourceview (thanks to Joe Sapp for pointing this
  out)
* Fix some crashes in plotting code
* Allow slopefield solutions to leave plot window by a small fudge factor.
* Fix zooming plots so that we can zoom by moving mouse in any direction
* Fix compilation with newer sealed vte (Vincent Untz)
* Fix up some typos in the documentation (Christian Kirbach, me)
* Translation updates (Christian Kirbach, Jorge González, Andrej Žnidaršič,
  Kjartan Maraas, Petr Kovar, Mario Blättermann, Fran Diéguez, Matej Urbančič,
  Andrej Žnidaršič, Marek Černocký, me)

* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Illinois at Urbana-Champaign

Changes to 1.0.9

* Fix matrix expansion.  This also fixes AuxilliaryUnitMatrix and JordanBlock.
* Fix several possible crashers.
* Fix a minor memory leak.

* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Illinois at Urbana-Champaign

Changes to 1.0.8

* Buildfixes for Cygwin and parallel builds (Yaakov)
* Check events before executing a command line, fixes a race which results in
  display anomalies on new vte.
* Documentation updates
* Require GTK/GLib 2.12 and use the new tooltips API.

* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Illinois at Urbana-Champaign

Changes to 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,
  Rodrigo Luiz Marques Flores, Daniel Nylander, Mario Blättermann, me)

* For some of the changes the author (Jiri) was partially supported by
  NSF grant DMS 0900885 and the University of Illinois at Urbana-Champaign

Changes to 1.0.6

* Draw grid and x/y axis on lineplots in gray, much better readability
* Draw solutions for vector fields
* Add VectorfieldDrawSolution and VectorfieldClearSolutions
* AskString now allows setting a default
* LinePlotDrawLine can change the plot window and draw arrows
* Read-only files are handled properly
* Clip all lines to within the plot window
* LinePlotWindow, SurfacePlotWindow now update the zoom immediately
* Fix zooming into vectorfield/slopefileld/parametric plots
* Fix flicker when plotting
* Fix line plot scale precision in case the x and y axis have very different
  scales
* Remove dependence on libgnome/ui
* PLUGIN API CHANGE: interface namespace is cleaned up.  But I don't know of
  any plugins that exist and thus break.
* An icon for the plot button
* Some optimizations
* Several other minor bugfixes
* Translation updates (Stéphane Raimbault, me)

Changes to 1.0.5

* Fix buffer overrun in print (Simon Munton)
* Fix EulersMethod (and also fix its documentation)
* EulersMethod and RungeKutta now solve systems by accepting vectors
* Fix several memory leaks
* Translation update (Jorge Gonzalez, Javier F. Serrador)

Changes to 1.0.4

* Add slope and vector field plotting, with a graphical solver for the
  slope fields.
* For graphing add SlopefieldPlot, VectorfieldPlot, SlopefieldDrawSolution,
  SlopefieldClearSolutions functions, and LinePlotDrawLegends,
  VectorfieldNormalized parameters.
* Add "Draw legends" checkbox to lineplots
* Add "Reset to original zoom" menuitem and add shortcuts for the zoom items
* Add Eigenvectors (only for 2x2 matrices), Parse, Evaluate, AskString functions
* Update the Mersenne prime list
* Clicking and not dragging on the plot now does a reasonable zoom-in
* Create plot window usable on my netbook
* Fix the compare functions and hence for loops starting at numbers less
  than 0.
* Fix the line plot scales
* Fix bug labeling line plot functions and several other minor bugs
  in the graphing code.
* Handle system errors (such as "out of file descriptors") more gracefully
* Minor other fixes and cleanup
* Translation updates (Hendrik Richter, Jesse Aviles, Djihed Afifi, Leonardo
  Ferreira Fontenelle, Fábio Nogueira, Koos, Jonh Wendell, Carlos Eduardo
  Santos, Jorge Gonzalez, Daniel Nylander, et moi)

Changes to 1.0.3

Syntax and semantics changes are marked with CHANGE:

* Add "Save Console Output" menu item to save console contents
* Add "Monitor a Variable" menu item to continuously monitor a single
  variable
* Wrap nonmatrix output in "Show Full Answer"
* Add IsMersennePrimeExponent, MersennePrimeExponents, IsDefined, undefine
* CHANGE: zeros, ones, rand, randint, I, SetMatrixSize now accept 0 for size
  and return null as an empty matrix.  wait, IndexComplement
  accept 0 and act accordingly as well.
* CHANGE: It's Fibonacci in correct spelling, short name is still fib
* Calling internal functions is now slightly faster
* QuadraticFormula built in and more numerically stable
* Gaussian elimination is now faster, and more stable when nonrational
  matrices are involved
* NullSpace slightly faster when the nullspace is empty
* Other minor optimizations
* Fix SolveLinearSystem (must return null on nonunique solutions)
* Fix crash related to returning custom functions from functions
* Fix some memory leaks
* Documentation updates
* Translations (Hendrik Richter, L. Lommer, P. Kovar, Andre Klapper, Yannig
  Marchegay, Pawan Chitrakar, Jorge Gonzalez, Jonh Wendell, et moi)

Changes to 1.0.2

* Symbolic derivative of erf, yay!
* @() works correctly with null as an empty range returning null (an empty
  matrix)
* Saner switching to scientific notation for floating point output
* Fix --disable-scrollkeep OMF file installation (Sebastian Dröge)
* Fix .desktop file (Sebastian Dröge)
* Fix extraneous space when prettyprinting fractions
* Fix leaving behind zombie processes when running programs from the IDE
* Fix building without gtksourceview
* Fix building with older gtk by not using GTK_STOCK_INFO
* Use the icon on our windows
* IsPerfectSquare works on rationals as it should
* don't mod arguments to trig functions ln, log10, log2, zeta, gamma,
  exp, round, trunc, floor, ceil, float, CompositeSimpsonsRule
* Translations (Yannig Marchegay, me)

Changes to 1.0.1

Syntax and semantics changes are marked with CHANGE:

* GNOME version can now show listing of all user defined global and local
  variables (can display this even while the engine is running, including
  a "backtrace" to aid debugging)
* GNOME version can now check if too much memory is being used and allows
  the user to interrupt the program rather than eat all available memory
  causing the computer to grind to a halt.
* When printing floating point numbers always make sure it is obvious that
  these are floating point by appending .0 when they would look like integers.
* Matrix printing is much nicer now, and possible to copy and paste back in
* Add IsMatrixPositive, IsMatrixNonnegative, version, IsZero, IsIdentity,
  DividePoly, IsSubset
* PivotColumns and NullSpace are built in for greater speed.
* CHANGE: Drop the support for tab as a matrix separator, it didn't
  work properly, especially not on the command line
* CHANGE: Remove IsGaussianInteger, we already have IsGaussInteger alias
  IsComplexInteger
* CHANGE: OrthogonalComplement is with respect to the Hermitian product
* CHANGE: display, printn and print don't follow FullExpressions=false
* The .desktop file now has different Categories setup so will likely appear
  in "Education" or "Accessories" menu rather than "Office"
* Chop small numbers when they appear near other larger numbers.  New
  parameters OutputChopExponent and OutputChopWhenExponent
* Fix set theory functions by essentially fixing IsIn.  Also fully document
  the behaviour of the set theory functions.
* Update the plotting widgetry from GtkExtra for prettier graphs
  (Sebastian Dröge, me)
* Add "Save all unsaved" menu item
* Add Ctrl->R for "Run"
* Default graphing limits are -10 to 10 for all axis (no more pi as default)
* Require at least GTK+ 2.4 for the GUI.
* Optionally compile with GtkSourceview2 and drop back to
  GtkSourceview1 if unavailable (Sebastian Dröge)
* Fit dependent axis works for parametric plots
* Legend more readable for parametric plots
* Fix loading of files and URIs from the command line
* Errors don't print the full file URI for opened program names
* Confirm closing unsaved programs
* Lots of documentation updates
* Use Binreloc 2.0 so that the package is relocatable
* Slight optimizations
* Handle null in more linear algebra function as an empty matrix/subspace
* Fix command line editing
* Fix showing full answer in the gui.
* Fix hangs in the graphing code by enforcing a minimum plot window size
* Consistently traverse matrices row-wise everywhere
* Remove unused file with nonfree license
* Add --disable-scrollkeeper and --disable-update-mimedb to configure
  (Sebastian Dröge)
* Update the about box
* Updated translations (Jorge Gonzales, et moi)

Changes to 1.0.0

* Killed the internal MPFR.  This lib is quite ubiquitous nowadays
  and it's not worth it maintaining our own out of date copy
* Add FrobeniusNumber, GreedyAlgorithm, StirlingNumberFirst,
  StirlingNumberSecond, RayleighQuotientIteration
* IsVector, IsDiagonal, IsUpperTriangular, IsLowerTriangular, nCr (Binomial)
  are now builtin for greater speed
* Hofstadter, HarmonicNumber work over matrices
* Fix ApplyOverMatrix2, RayleighQuotient
* Fix GCD and LCM aliases with respect to varargs
* Fix bug with printing scientific notation wrt newer gcc optimizations
* The exponent when the automatic scientific notation kicks in now
  depends on the MaxDigits parameter
* It's Pochhammer, not Puchhammer
* Documentation updates
* fix for platforms without wordexp (Joerg Sonnenberger)
* Translations (David Lodge, Djihed Afifi, Pema Geyleg, Bruno Brouard,
  Stéphane Raimbault, Rémi Le Lijour, Jorge Gonzales, Raivis Dejus, me)

Changes to 0.7.7

* Add IsPositiveDefinite, IsPositiveSemidefinite, QuarticFormula
* SEMANTICS: QuadraticFormula, CubicFormula, Eigenvalues, and DiagonalOf
  now consistently return a column vector
* Fix CubicFormula for complex coefficients and better handle real roots,
  and use QuarticFormula in PolynomialRoots
* Eigenvalues now computes eigenvalues for 3x3 and 4x4 matrices
* Add undo/redo capability
* CHANGE: It's RayleighQuotient not RaleighQuotient
* "Show Full Answer" menu item to show the full answer in a
  scrollable text window
* "Next/Previous Tab" menu items and accelerators, also
  Programs menu now always displayed and has a "Console"
  menuitem too.
* Mixed fractions can now be set in the preference box
* The preference box has options for remembering (or forgetting)
  the output/precision settings.  Normally these settings are probably
  temporary and hence we don't want to remember them always.
* Preference box has "Help" button
* When graphing a surface when we encounter complex value or other errors,
  don't assume 0, but just don't graph anything at that point.
* Cosmetic changes to UI
* Documentation updates
* Fix plugin reading
* Portability fixes
* Translation updates (Pema Geyleg, David Lodge, Francisco Javier F. Serrador,
  Djihed Afifi, Pawan Chitrakar, et moi)

Changes to 0.7.6.1

* Fix rational powers

Changes to 0.7.6

* Add QuadraticFormula, CubicFormula, PolynomialRoots, CommutationMatrix,
  ToeplitzMatrix, MakeVector, RiemannZeta, GammaFunction
* Add --exec option to execute an expression from the command line
* Add chapter to the documentation on plotting and other minor updates to
  the docs
* Fix complex number handling in number of functions, particularly in
  all functions that use gaussian elimination and related routines
* Translations updated a teeny bit (Michele Petrecca, me)

Changes to 0.7.5

* Added functions: CatalanConstant, atan2, NextCombination, CountZeroColumns,
  QRDecomposition, SesquilinearForm, SesquilinearFormFunction
* REMOVED: function GramSchmidtDot, it is now redundant
* SEMANTICS: DotProduct is now the normal (real) DotProduct not the
  hermitian product, places that used DotProduct now use HermitianProduct,
  InnerProduct is now an alias for HermitianProduct
* GramSchmidt now normalizes its vectors
* GramSchmidt, Projection, VectorAngle have the inner product as optional
  argument now and all take it in the same way
* OuterProduct now actually does outer product
* Port some gel functions to C for speed: StripZeroColumns, IsIn, Intersection,
  SetMinus, HermitianProduct
* Some further small optimizations
* Minor update of the manual
* SYNTAX: entries in a matrix are now evaluated in a logical order rather
  then in the rather odd order they were before.
* MANY fixes to memory management, fixed many leaks and crashes
* In the GNOME version, resizing works like in gnome-terminal now,
  which fixes issues with bleeding edge vte and is probably right anyway
* Update internal MPFR to version 2.2.0 and require at least version 2.2.0
* Other minor fixes
* Translation updates (Francisco Javier F. Serrador, Kjartan Maraas,
  Pawan Chitrakar, Chao-Hsiung Liao, Miloslav Trmac, Adam Weinberger)

Changes to 0.7.4

* Primitive symbolic derivatives of some expressions
* Parametric plots
* Accepts identifiers as well as functions in a number of places
* SYNTAX: When adding a scalar to a square matrix "A+x" now acts as "A+x*I"
  rather then A+x*ones.  If you want to add a scalar to every element of a
  matrix, use .+ and .- operators.  Behaviour is element by element for vectors
  (1 by n or n by 1 matrices)
* SYNTAX: 'call' now binds tighter to allow "x = f call (x)" to act like
  x=(f(x)) rather then (x=f)(x)
* SYNTAX: allow "identifier + string" which creates a string
* Added functions: IsFunctionOrIdentifier, ComposePower, Derivative,
  SymbolicDerivative SymbolicDerivativeTry, SymbolicNthDerivative,
  SymbolicNthDerivativeTry, SymbolicTaylorApproximationFunction
* Many minor fixes

Changes to 0.7.3

* Update to mpfr 2.1.1
* Documentation update, document the plotting functions for example.
* Blinking cursor can now be turned off in gnome-genius
* Set default precision to 128 bits.  Who needs 256 can set it in the
  preferences.  Also save/restore the precision
* Add LinePlotClear, LinePlotDrawLine functions to allow drawing arbitrary
  lines and to allow a way to do parametric plots until that functionality
  is actually added
* Added: NewtonsMethodPoly, wait
* Lots of work on the internal number structure to make it faster/more
  memory efficient and to fix some possible bugs/issues
* Fix float formatting bug that sometimes caused hangs and crashes
* Fix large leak on element by element operations
* Fix compilation with external mpfr
* Bunch of other little bugs/issues fixed.
* Translation updates (Adam Weinberger, Miloslav Trmac, David Lodge,
  Petrecca Michele, Vincent van Adrighem, Tino Meinen, Jan Moren)

Changes to 0.7.2

* The manual is in Docbook and has been greatly updated (Kai Willadsen, me)
  there is even the beginnings of a detailed function reference with links
  to Planetmath and Mathworld.
* Better help integration
* We have an icon (Eugenia Loli-Queru)
* Include internal MPFR which is more recent and less buggy then ones
  found on most people's systems (this makes it easier to compile genius
  too)
* Added: CompositeSimpsonsRuleTolerance, GaussFunction, GaussDistribution,
  BernoulliNumber, ExactDivision, MoebiusMu (Alessio Frusciante), 
  IsNonNegativeInteger, LUDecomposition (David W. Hutchison),
  EulersMethod, RungeKutta
* Fixed, round, ceil, trunc and Hofstadter
* Few more functions now apply over matrices with matrix arguments
* CompositeSimpsonsRule and Divides are built in for speed
* Treat strings as constants, thus getting pretty good speedups where
  strings are used
* When new references are encountered where the variable does not exist we
  create the variable in the current context
* On the plot window use "y=" as a label to indicate what goes in the text
  boxes
* "New" toolbar item
* Fix crashes on non-number matrix multiplies
* Bunch of minor fixes all over
* Help texts are being translated now
* Translation updates (Adam Weinberger, David Lodge, Miloslav Trmac,
  Amanpreet Singh Alam, Raphael Higino, Vincent van Adrighem,
  Tino Meinen, Jan Morén, Laurent Dhima, Takeshi AIHANA,
  Francisco Javier F. Serrador)

Changes to 0.7.1

* Run EPS output through ps2epsi if it's there which adds a bitmap preview,
  even though this bitmap preview is fairly crappy
* Add PNG export for plots
* Remove some parenthesis from output where they are not needed
* SYNTAX: InfiniteSum, InfiniteSum2, InfiniteProduct, InfiniteProduct2,
  now no longer take the tolerance argument and behaviour is controlled
  by the SumProductTolerance, SumProductSFS and SumProductNumberOfTries like
  other limits and they return null when limit can't seem to be found
* Add: NumericalLeftDerivative, NumericalRightDerivative
* Fix the NumericalLimitAtInfinity function and its use and with that fix
  NDerivative (which is now an alias for NumericalDerivative), IsContinuous,
  IsDifferentiable, Limit, LeftLimit, RightLimit
* Fix the specfile and custom CFLAGS are added after the default ones
  (Florin Andrei, me)
* LinePlot and SurfacePlot no longer crash when called without arguments
* Fix EPS/PS export for older gtk
* Fixup compilation of GtkExtra-2 with gcc 3.4
* Bunch of "optimizations" and minor fixes

Changes to 0.7.0

* Replaced plotting with the plotting widget from GtkExtra-2 (private
  copy included, no new dependency), this has several new implications:
 - Plots can be printed or exported to PS or EPS
 - 3D surface plots are supported
* SYNTAX: Native boolean type, true/false are the constants and
  added IntegerFromBoolean and IsBoolean functions.  Should still
  be source compatible
* Fixed saving files warnings about existing files and fixed bad
  warning on loading files
* StandardDeviation now works
* sin,cos,sinh,cosh now work correctly with complex arguments
* Some memory profiling.  Allocate internal structures in long
  continuous blocks and further fixup the engine to be nicer with
  separator nodes which can now take a lot of arguments and really whack
  the result of all but the last expressions at once.
* Work around a mpfr problem when it could return a negative value
  for rand()
* Translation updates (Estevao Samuel Procopio, Vincent van Adrighem,
  Adam Weinberger, Miloslav Trmac, Laurent Dhima, David Lodge,
  Gustavo Maciel Dias Vieira, Raphael Higino, Gareth Owen)

Changes to 0.6.1

* On undefined identifier error, genius gives you close suggestions
* Black on white mode for the console for those that can't see white
  on black so well.
* More UTF-8 cleanup so other languages should work now
* More fun with font sizes and try to normally deduce the font size for the
  console from the theme font size on startup.  Also don't write the font
  as a preference until it's explicitly set
* Accept file drops and open those files
* Use gnome-vfs for opening and saving files (not for load and run yet)
* Mime stuff so that you can open .gel files from nautilus
* Somewhat nicer display of real fractions
* New functions: cis
* The functions promised in 0.6.0 weren't actually added, this affects:
  Argument, arg, Arg, MoebiusDiskMapping, MoebiusMapping,
  MoebiusMappingInftyToOne, MoebiusMappingInftyToZero,
  MoebiusMappingInftyToInfty.
* When we complain about uninitialized functions/variables, give suggestions
* Fix "number <=> string"
* Some code cleanup
* MacOSX install instructions in INSTALL.MacOSX (Linc Davis)
* Other minor fixes
* Translation updates (Gustavo Maciel Dias Vieira, Raphael Higino,
  Jordi Mallach, Xavier Conde Rueda, Miloslav Trmac, Vincent van Adrighem,
  Tino Meinen, Adam Weinberger, Gareth Owen, Gustavo Noronha Silva)

Changes to 0.6.0

* Zooming/Fitting support on the line plots
* Line plots can now be invoked from a GUI
* Scale is printed on line plots
* In case GTK+ 2.4 is used, use the new file chooser dialog, but still
  compile with older gtk
* Some fixes in case GTK+ 2.4 is used
* Allow compilation without GNOME to get the barebones command line
  version
* SYNTAX: Allow some arithmetic operations on functions, as well as passing
  functions to a few select 1 argument functions such as exp or ln, for
  example: exp(sin) returns a function which does exp(sin(x)) and
  sin^2 returns a function that does sin(x)^2
* SYNTAX: New operator := which acts just like = but is never translated
  to ==
* SYNTAX: e^x now translated to exp(x) for better precision (and should be
  teeny bit faster too)
* Optimize/cleanup the mp wrapper code which on my tests can gain something
  like 40% improvement on code that does lots of handling of smaller integers.
* Add PoissonKernel, DirichletKernel, FejerKernel, MoebiusDiskMapping,
  MoebiusMapping, MoebiusMappingInftyToOne, MoebiusMappingInftyToZero
  and MoebiusMappingInftyToInfty
* Add rotation matrices (2D and 3D euclidean space)
* Fix compilation of parameters
* Fix interruption with ^C
* Lots of other minor fixes
* Documentation updates
* Translation updates (Kostas Papadimas, Petrow Velonis, Vincent van Adrighem,
  Tino Meinen, Danilo Segan, Miloslav Trmac, Robert Sedak, Alastair McKinstry,
  Guntupalli Karunakar, Christophe Merlet, Sebastien Bacher)

Changes to 0.5.7.1

* Fix spinners in the preferences

Changes to 0.5.7

* Add ErrorFunction (erf), InfiniteProduct, InfiniteProduct2
* Allow large integer powers of 1,-1,1i,-1i and do it very fast
* Be nicer with integer powers of pure imaginary numbers
* mpfr seems broken in 4.1.2 causing something like 0.1^(-1.0) to come out
  as 0.1 rather then 10.  Powers will just use exp and ln for now which
  are correct.
* Fix warnings on Kernel([0])
* Don't use DEPRECATED defines to allow compiling with newer gtk+
* Translation updates (Vincent van Adrighem, Metin Amiroff, Jordi Mallach,
  Xavier Conde Rueda, Christian Rose, Miloslav Trmac, Duarte Loreto,
  Tino Meinen)

Changes to 0.5.6

* Several leaks fixed
* Several uninitialized data usage fixed
* Tolerances are floats, add aliases 'Sign' and
  'AbsoluteValue' and add the 'Identity' function
* Lots of internal cleanup including not using deprecated
  stuff.
* Start using vicious-extensions lib, and with that
  the 'genius' binary no longer inits gnome which means
  faster startup and faster regression testing runs
* Lots of random minor optimization
  (both performance and memory usage)
* Some build fixes
* Fix systems without wordexp (FreeBSD ports)
* Allow loading programs from the command line
  to gnome-genius
* Use GtkSourceView if available for syntax highlighting
* Handle change directory for filename completion
  correctly
* GUI a teeny bit HIGgier (but not completely)
* Translation updates (Guntupalli Karunakar, Danilo Segan,
  Vincent van Adrighem, Pablo Gonzalo del Campo,
  Francisco Javier F. Serrador, Duarte Loreto, Christian Rose,
  Guntupalli Karunakar, Wang Jian, Mai Hao Hui, Metin Amiroff,
  Jordi Mallach, Xavier Conde Rueda)

Changes to 0.5.5

Note the syntax changes marked with 'SYNTAX:'

* Fix quite a few DOH! errors in the GUI it should now be usable to
  actually edit and save file and all that
* Also print the number line in the status box, this makes it much easier
  to find parse errors.
* Add SqrtModPrime, IsPrimitiveModWithPrimeFactors,
  SilverPohligHellmanWithFactorization
* SYNTAX: use SqrtModPrime when sqrt is called in mod context (only if the
  modulo is a prime, otherwise we print an error)
* Other minor fixes.
* Some new translations apparently too (Swedish by Christian Rose)

Changes to 0.5.4

Note the syntax changes marked with 'SYNTAX:'

* The GUI now allows editing program files and running them directly from
  the gui.
* SYNTAX: If "log" is used in mod environment it acts as DiscreteLog
* IsEven and IsOdd are now internal and fast
* Use MPFR (if available) for log10 and log2, and add lg as an alias to
  log2
* SYNTAX: Use GMP for the MillerRabinTest and implement StrongPseudoprimeTest,
  IsPrime, and MillerRabinTestSure internally, remove IsPrimeLoopMax and
  PrimeProbabilityEpsilon, MillerRabinTest takes the number of reps to do
  and not the epsilon and there is IsPrimeMillerRabinReps parameter, also
  remove IsPrimeProbability
* SYNTAX: Snarf the Pollard-Rho implementation from GMP examples and use it
  for Factorize.  Whack FactorizeLoopMax
* Use MPFR for EulerConstant if available
* Added MillerRabinTestSure, StringToASCII, ASCIIToString, AlphabetToString,
  StringToAlphabet, LeastAbsoluteResidue, AreRelativelyPrime, DiscreteLog,
  CRT (ChineseRemainder), IsPrimitiveMod, ConvertToBase, ConvertFromBase,
  GetCurrentModulo, MidpointRule, NumericalIntegral, SolveLinearSystem,
  MakeSet, Union, Intersection, IndexCalculus, IndexCalculusPrecalculation,
  FindPrimitiveElementMod, FindRandomPrimitiveElementMod and Compose
* Fixed IsStrongPseudoprime
* Fixed the integer power functions and use MPFR for the float one if
  available.
* Document some functions
* elements, rows, columns accept null and treat it like 0x0 matrix
* SYNTAX: Allow return after comma to break a long vector input
* Mod matrices after all primitives (fixes for example "-[1] mod 2")
* when function is undocumented, print at least a prototype on help
* SYNTAX: 'mod' and 'call' now binds tighter then logical operators to
  make "if a == b mod n and a == c mod n then ..."
* SYNTAX: I, zeros, ones, rand, randint don't mod their arguments when in
  mod mode
* SYNTAX: null is accepted for the "for in" type loops to mean empty
* Add "Set Theory" category to help
* Fix some crashes and plug many leaks

Changes to 0.5.3

Note the syntax changes marked with 'SYNTAX:'

* Very basic line graphing of R->R functions with LinePlot function
* Use MPFR for some floating point functions such as powers, logs, sin/cos
  and such.  This increases the speed of those operations by about 10 fold
  or more.  I will start migrating towards MPFR only support in the future.
  See www.mpfr.org.
* "a^b mod m" is now done sanely and fast just like the PowerMod function
* Rudimentary MathML output support
* Add Copy Answer As Plain/LaTeX/MathML/Troff menu items
* SYNTAX: A null inside a matrix expansion is treated as an empty matrix.  So
  [null,1,2] will be expanded as [1,2]
* SYNTAX: Allow rationals and integers as complex numbers though this support is
  kind of experimental
* Increase some limits on factorizations
* SYNTAX: Add (<expr>)i operator macro which will multiply <expr> by i
* SYNTAX: Negation parsing changed -1^k still parses as (-1)^k but -a^k parses
  as -(a^k) (where a is anything but a number
* Rational powers now return integers if possible, and so the
  SymbolicSquareRoot and SymbolicNthRoot functions are not necessary
* Nicer printing of complex numbers
* Printing fixes
* Fractions printed nicely in troff and latex mode
* Fix crash on setting built in parameters if there is an exception
* Add MaximalPrimePowerFactors, PrimeFactors and CombineFactorizations,
  RemoveFactor, Gravity (the gravitational constant), EulerConstant,
  FermatFactorization, IsGaussInteger, IsPositiveInteger, MillerRabinTest
* Use MillerRabinTest in IsPrime adding a config parameter for this
* Remove SymbolicSquareRoot, SymbolicNthRoot (sqrt and rational powers
  is the same thing)
* Add some new aliases for a few functions
* Better EulerPhi implementation
* Fix Factors
* SYNTAX: Fix precedence of : to be lower then that of standard arithmetic
  operators
* SYNTAX: Factorial now binds more closely then power
* SYNTAX: Allow more matlab like notation of getting whole rows/columns
  (such as foo@(2,:))
* Add an Edit menu with Copy and Paste
* Add "Really want to quit" dialog and allow quitting while calculations are
  running
* Allow reading arbitrarily long compiled file record lines
* Some very minor leaks fixed
* Fix interrupting input while not calculating anything (this was a nasty
  bug that prevented any further thing to be evaluated)
* Don't allow executing anything if something else is executing, thus causing
  a crash.
* A number of minor bugs squashed
* And finally a new small easter egg

Changes to 0.5.2

* UP TO DATE ONLINE MANUAL: well, don't be too excited, it's just a text
  file, but can now be viewed directly from genius.
* Use vte instead of zvt since zvt was giving me fits (vte is on the other
  hand giving me different fits).
* Fix precedence of defining a function (now "function f(x) = foo mod bar"
  will work as expected)
* Using rationals in modular mode will take the inverses mod n
* Negative powers and division of matrices in modular mode
* Implement IsPrimeProbability, LucasNumber, ModInvert, EulerPhi,
  Subfactorial, GoldenRatio
* Use gmp for NextPrime
* Kill some unimplemented functions so that people don't get confused
* Some function renaming (where old syntax was used) and some more help
  strings
* The help output is now nicer
* In latex output mode we print [] instead of () for matrices since
  I think it's nicer
* The readline helper is now in the libexec directory as it should be
* Fixup the plugin API a bit and hide the test plugin from the GUI
* The .desktop is now updated, using intltool and installed in proper new
  location and all that good stuff
* Fixed the gettext/intltool stuff, now actually installs translations
  correctly and all that
* Random minor fixes and cleanup

Changes to 0.5.1

* Fix rounding when first digit is rounded and is 9 (reported by
  Kai Arstila)
* Fix atan by using implementation from Guillermo Ballester Valor
  (reported by Kai Arstila)
* Few more functions: Stupid eigenvalue function for 2x2 matrices,
  RaleighQuotient
* Reverse the direction of the vandermonde matrix to coincide with how
  we use polynomials
* Fix modular arithmetic on single values and matrices
* Cache identity matrices for speed

Changes to 0.5.0

* Stack based execution engine, allows much deeper recursion
* User parameters
* Better help support
* Syntax changed to be nicer and/or more matlab like in places
* New operators: !! ./ .\ .* .^ .% .'
* Sum and product loops
* Matrix indexes can now be vectors like in matlab
* Many new functions
* New commands (ls, help, pwd, cd)
* Many random fixes
* And much MUCH more

Changes to 0.4.6

* accept more different formats of floats in scientific notation
* fix problems with hangs on help and large dialogs

Changes to 0.4.5

* modular arithmetic support (e.g. "expr mod n")
* different parsing of files on the load line (you can now pass multiple
  files with quotes everywhere, just like in a shell
* plugin toplevel command to load plugins from command line
* more function descriptions for the help command
* possibility to run gel function from inside of genius code
* exp function now behaves properly for matrices (sort of)
* setting calculator parameters is now more natural, just as setting variables
* option for maximum line output length for expression output, and for
  maximum number of errors printed
* backdivision for matrices (e.g. X=A\B means A*X=B)
* bug and portability fixes

Changes to 0.4.4

* bugfixes, bugfixes, bugfixes
* very very very initial shlib plugin support

Changes to 0.4.3

* deprecated the bc way of adding functions
* better interactive parsing
* i18n actually works

Changes to 0.4.[12]

* new gnome frontend

Changes to 0.4 (includes all changes from all >0.3.1)

* new syntax for writing functions, more math like
* functions are now passed by value not by reference, this is unfortunately
  backwards incompatible but adds consistency and flexibility, so just instead
  of sum(4,5,&func) you'd write sum(4,5,func), with anonymous functions,
  the calling syntax does not change. inside the function then, one would use
  func(...) instead of *func(...)
* library file is compiled now for quick startup
* many new functions
* more matrix support
* complete complex number support with new operators

Changes to 0.3 (includes all changes from all >0.2.1)

* matrix support
* a couple of new operators (absolute value, get element/row/column, transpose)
* whole bunch of new functions

Changes to 0.2

* no more postfix, no more prefix, everything is infix
* conditionals are better
* variable/function references
* anonymous functions
