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