VERSION HISTORY OF MATHOMATIC (latest changes are at the end of this file)
--------------------------------------------------------------------------

Changes made to Mathomatic V12.0:

Reduced stack usage by almost 2/3.

Reduced stack usage another large amount to the smallest it can be.

Laplace (a*constant^x) and (a/constant^x) for x has been added.

Allow integration of (a/constant^x) for x.

Moved all numeric GCD routines to "gcd.c".

Improved limit command for "limit x inf".

Halved the default equation size and doubled the number of equation spaces to 40.

Fixed bug that caused infinite loop for "2^(.5*n)" and incorrect answer
for "-1^(2*n)".

Changes made to Mathomatic V12.1:

Allow edit command to work with no equations defined.

Allow typing "abort" or "quit" during pause command.
They both abort the current operation.

Removed usage displayed every time a command fails.

Simplify command once again prefers 1/(constant^n) instead of (1/constant)^n.

Added "set finance" option.

Some improvement to simplification of constants.

Improved "factor number" command.  Made self-testing and allow multiple integers.

Strip trailing newlines from string returned by getstring().

Re-enabled power factoring of k^x*k^y, where k is a constant.
The bug it had caused just disappeared.
This is because a lot of changes have been made.

Changes made to Mathomatic V12.1b:

Some speed up in polynomial factoring made by ignoring anything that is not
a polynomial in any variable.

Improved denominator rationalizer.

Disabled power factoring of -1^x*-1^y.
This time it is done right.

Added new function debug_string().  It simplifies the debugging code.

Simplified pf_sub() (the polynomial factoring subroutine).

Fixed up Prime Number Tools man pages.

Improved matho-twin.

Added simplification of roots like 12^.5 to 2*(3^.5) in simplify command.

Changes made to Mathomatic V12.1c:

Code cleanup.

Improved the results of solving by not always factoring constants.
This is a noticeable change.

Added semicolon (";") to end of each line when using "list export".

Some improvement made to the simplify command.

More tests added to test suite.

Fixed bug in patch_root_div().

Fixed infinity/nan bug in uf_repeat().

Changes made to Mathomatic V12.1d:

Deleted primes/matho-sumsq program from distribution.
It is not useful.

Created file "doc/index.html".

Cleaned up and verified super_factor().

Cleaned up and tested group_proc().

Removed a parameter from list_var().

Optimized color output of flist().

Update to matho-primes and matho-twin.

Changes made to Mathomatic V12.1e:

Corrected set_error_level().

Optimized make_fractions().

Changed "makefile.cygwin" to always compile with readline enabled.

Created function found_var() and replaced all equivalent code with it.
This reduced the code size a bit.

Commented out sensitivity command.  If this is OK with everyone, I will
simplify the parsing code and delete the sensitivity code.

Made the display routines work with non-equations.

Made list_proc() return the number of characters output.

Perfected Mathomatic Command Reference doc.

Changes made to Mathomatic V12.2:

Removed automatic simplification that occured every time an equation was entered.

Simplify sign variables raised to a fractional power greater than 2.

Two major speed optimizations were made.

Changes made to Mathomatic V12.2b:

Use mkstemp() for temp file in edit command.  Put temp file in "/tmp",
instead of current directory.

Created my_strlcpy(), since Linux doesn't have strlcpy().

Made everything declared static that should be.

Prime Number Tools cleaned up and compiled with "-Wall".
Made them all successfully compile with g++.

A bug fix for HTML mode.

Completely removed sensitivity command and simplified parsing code.

Fixed minor bug in fraction format display routine.

Changes made to Mathomatic V12.2c:

Created list_exp() and list_equation(), which create a text string
out of an expression or equation, respectively.

Moved all global variables into "globals.c".

Fixed some warnings with "-Wall".  There are still plenty of them,
some of which gcc shouldn't be reporting and are not worth fixing.

Added usage(), which displays usage when Mathomatic is invoked with
an invalid option.

Did some moving around and rewriting of functions to make a Mathomatic
library possible.

Renamed parse.c to help.c and parse.h to parse.c.

Added push command.

Update to matho-pascal to handle very wide screens well and make it crash-proof.

Allow backslashes (\) in variable names.

Moved all standard system include files into "includes.h".
This was done so that "am.h" can be used as a Mathomatic library include file.

Cleaned up include file structure.

Changes made to Mathomatic V12.2d:

Created and tested "lib/protomain.c".  This is the prototype main() for
using Mathomatic code in other projects.

Minor corrections to "doc/manual.htm".

Created function clear_all(), which replaces clear("all").

Made calculate command work with non-equations.

Added "make uninstall" to makefile.

Some comments and complex_div() added.

Slight improvement to simplify command.

Added a complex number expression parser: parse_complex_exp() in "complex.c".
Cleaned up complex_root_simp().

Enhanced divide command to support complex numbers.

Created function get_constant() in "complex.c" and replaced
all equivalent code with it.

Improved numerical gcd().

Changes made to Mathomatic V12.2e:

Fixed sum and product commands to work the way they should.

Differentiate (complex number)^x.

Made i#^x simplify correctly.

Added "replace constants" command option, for substituting pi and e#
in the current equation with their respective floating point values.

Integrate (complex number)^x and simplify afterwards, just like
the derivative command.

Fixed very minor bug in simplify, where 1/(i#^x) was converted to i#^x.

Prepared code for a better super_factor().

Changes made to Mathomatic V12.3:

Some improvements to the HTML docs.

Update to "lib/protomain.c".

Code cleanup.

Fixed many cases of possible character string overflow.
Removed all sprintf(), most strcpy() and strcat().

Changes made to Mathomatic V12.3.1:

Removed all strcpy().

Improvement to simplify command.  div_remainder() was rewritten to simplify better.

Renamed group command to "flist".

Changes made to Mathomatic V12.3.2:

Yet another improvement to the simplify command.  poly2_gcd() was fixed.

Improved bounds checking for gcd().

Pause command now takes an argument.

Made derivative, extrema, and integrate commands work with non-equations.

An important optimization was made to factor_times().

Added and tested code for numerical integration.  Currently disabled,
to enable define "NUMERICAL_INTEGRATE" in CFLAGS.

Changes made to Mathomatic V12.3.3:

Added singularity checking and enabled numerical integration.

Fixed a bug in and documented numerical integration.
Thanks go to John Blommers for help with this.

Simplify command was improved.

Startup displays more accurate memory usage info.

Update to the Mathomatic man page (added description).

Added NO_COLOR define (see README.txt).

Added function get_range_eol().

Doubled MAX_COMPARE_TERMS to 400.

Changes made to Mathomatic V12.4.0:

Created executable shell script "compile.secure" (see README.txt).

Made laplace command work with non-equations.

Update to "primes/matho-pascal.c" to give maximum centered output.

Added error and bounds checking to roots command.

Allow sum and product commands work with non-equations and non-integers.

Changed many atoi() to strtol().

Fixed bug in solving 0=x^9+x^4.5 for x, and made some tune-ups to the solve routine.

Allowed debug level -1 and made it useful.

Changes made to Mathomatic V12.4.1:

Fixed solving for 0 of (0=(any constant expression)*x).

Removed EPSILON define.  Always true.

Added function complex_fixup(), which makes entering e#^(pi*i#) work perfectly.

Minor correction to solve routine.

Changes made to Mathomatic V12.4.2:

Allow larger fractions.

Doubled the default max expression size and memory requirements are now 20 megabytes.

Added ability to set the number of partitions when using the nintegrate command.

Some code and messages cleanup.

Fixed bug in nintegrate command (wrong number of function parameters).

Improved solve routine.

Update to "primes/matho-around.c".

Changes made to Mathomatic V12.4.3:

Added a few checks for NULL char pointers.

Major change in memory allocation: equation spaces are now only allocated as needed.

Changed optimize command to accept an equation number range.
You can now optimize all stored equations at once.

Some minor code cleanups and commenting.

Changes made to Mathomatic V12.4.4:

Bug fix made to divide command.

Increased the number of equation spaces to 100.

Fixed a precision problem with the "list export" command.

Added and implemented function return_result(equation_number) at the end of most commands,
to facilitate use as a library.

Some more comments were added and "list.c" was cleaned up.

Replaced most printf()s with a new function called error().
