VERSION HISTORY OF MATHOMATIC
-----------------------------

Changes made to Mathomatic V1.0:

Implemented complex number arithmetic.

Improved simplification.

Fixed bug in roots greater than 2 of negative numbers.
-16^.25 now converts to 2*(i^0.5) which is correct instead of 2*i.

Fixed bug that crashes system when solving an undefined equation for zero.
Mathomatic now asks you to enter an equation if you forget the equate operator.

Changes made to Mathomatic V1.1:

Safer 'save' command.

Improved simplification of expressions with roots.

Improved solving of equations with roots.

Now juggling only occurs when there is a level one divide.

Now solving is faster than ever!

Rewrote factoring of constants.  Now it factors out negative numbers.

Wrote tutorial program.

Changes made to Mathomatic V1.2:

Improved 'simplify' command.

Added the sensitivity command to the tutorial.

Improved 'sensitivity' command by allowing user to find the sensitivity of
a combination of independent variables.

Rewrote 'derivative' command to use the rules of differentiation.
The 'derivative' command is much faster and it works with any equation
except the derivative with respect to x of 'a^x'.

Solve function now tells you if an equation is an identity or if
there are no possible values for the variable you solving for.

Fixed many bugs.

Changes made to Mathomatic V1.3:

Changed order of factoring.

Fixed many minor bugs.

Added more algebraic rules.

Changes made to Mathomatic V1.4:

Fixed some minor bugs.

Improved solving by removing and displaying one solution at a time
until the equation is solvable.

Optimized some code.

Changes made to Mathomatic V1.5:

simplify:
	1/(x^(b-c)) -> x^(c-b).  -1/(b-c) -> 1/(c-b).
	Converts 1/m*(-1*b+y) to (y-b)/m.

factor b^n+b^o and b^n+-b^o so more equations can be solved.

Added demo to tutorial.

Changes made to Mathomatic V1.6:

Adding and subtracting algebraic fractions with different denominators
now only occurs in complex fractions.

Ported to Microsoft C.  More floating point error checking.

Changes made to Mathomatic V1.7:

Improved solving of equations with roots.

Changes made to Mathomatic V1.8:

Improved 'compare' command.

Added polynomial division.

Added polynomial factoring for polynomials with repeated factors.

Changes made to Mathomatic V2.0:

Added simplification of sign^(odd number).

Allow simplification of bigger equations.

Improved polynomial factoring.

Improved tutorial program.

Changes made to Mathomatic V2.1:

Improved polynomial division and factoring.

Improved tutorial program.

Changes made to Mathomatic V2.2:

Changes made to Mathomatic V2.3:

Greatly improved simplification of algebraic fractions with smart_div routine.

Changes made to Mathomatic V2.4:

Added partial unfactoring option.

Fixed possible bug in quadratic solve routine.

Added kludge to detect errors in entering out of range numbers.

Changed code to allow "i" in polynomial division and factoring.

Added fraction format display to "group" command.

Changed "i" to "i#".

Added "print" command.

Changes made to Mathomatic V2.5:

Added MAX_TRIES to smart_div routine.

Fixed polynomial factoring to work with roots and all simple divides.

Put limited version of Mathomatic in tutorial program.

Changes made to Mathomatic V2.6:

More smart_div and less poly_div. (No need for separate polysimp command now!)

Save command saves constants in higher precision now.

Improved user error reporting.

Changes made to Mathomatic V2.7:

Fixed "#" (select) parsing code.

Changed atof() to strtod().

Changed unfactoring default to partial. (Better simplify and larger equations)

Changed derivative command from simp_side() to simpb_side().

Fixed bug in simplify command.

Changes made to Mathomatic V2.8:

Improved smart_div.

Fixed old bug in simplify command.

Changes made to Mathomatic V2.9:

Fixed some exception handling.

Changed the simplify command.

Added float to fraction conversion in group and print commands.

Made fctor_power more powerful.

Changes made to Mathomatic V3.0:

Mathomatic now allows more than two solutions.

The calculate command now automatically substitutes all possible sign values.

Changed command parsing so you only need to type the first 4 letters
of a command.

Changes made to Mathomatic V3.1:

Improved help command.

Changes made to Mathomatic V3.2:

Made option "unfactor partial" useful.

Made fraction output handle larger equations.

Made pdiv_remainder smarter.

Made smart_div smarter.

Changes made to Mathomatic V3.3:

Changed "unfactor partial/full" to "unfactor fractions/denominators".

Factor more polynomials.

Changes made to Mathomatic V3.4:

Fixed calculation of odd roots.

Added more "sign"s while solving.

Remove more "sign"s in elim_sign().

Updated tutorial program.

Changes made to Mathomatic V3.5:

Improved accuracy of calculations.

Increased speed with coprocessor support.

Added numerical integrate command.

Improved eliminate command and added usage_flag.

Made all commands return true if successful.

Made read command abort on error return.

Larger equations work (no unfactor x^int_constant and better quad_solve).

Simplified always_positive().

Made increasing power during solve faster.

Factor more polynomials.

Changed simplify and smart_div.

Speeded up and improved solve routine.

Changes made to Mathomatic V3.6:

Improved simplify command.  It now unfactors everything.

Improved compare command.

Changed simpb_side().

Changes made to Mathomatic V3.7:

Ignore spaces on input to tutorial program.

Made eliminate command more verbose.

Combine denominators under power operator.

Implemented equation number ranges for many commands.

Improved factoring.

Changes made to Mathomatic V3.8:

Speedup.  Not doing div_itself() if doing factor_times().

Reversed order of factor_times() and fctor_power() to match factor_plus().

Improved smart_div().

Speedup.  Not doing organize() as much.

Added unsimp2_power().

Improved simplify command.  It now combines and unfactors everything.

Changes made to Mathomatic V4.0:

Added make_fractions() to simplify command.

Fixed big bug in pdiv_remainder().

Changes made to Mathomatic V4.1:

Improved simplify command.

Added Taylor series expansion.

Changes made to Mathomatic V4.2:

Allow Taylor series expansion of unsolved equations.

Optimized some commmands for space.

Made group and print commands skip equations that cause exceptions.

Added Mathomatic Graph!

Changes made to Mathomatic V4.3:

Improved simplification to remove more imaginary numbers.

Made lazy equation input to Mathomatic acceptable.

Changes made to Mathomatic V4.4:

Nag users of limited version to register.

Changes made to Mathomatic V4.5:

Speed up simplifying of many variables.

Changes made to Mathomatic V4.6:

Improved factor_constants().

Improved make_fractions() and gcd().

Changes made to Mathomatic V4.7:

Fixed solving for zero so compare command will work better.

Added quasi-quadratic solving.

Changes made to Mathomatic V4.8:

Improved increasing power during solving to not expand ridiculously.

Added QuickCalc code.

Changes made to Mathomatic V4.9:

Changed to double precision storage.

Changes made to Mathomatic V5.1:

Added "copy" command.

Added "polydivide" command.

Changes made to Mathomatic V5.2:

Improved "compare" command.

Added "pause" command.

Added "ngcd" command.

Changes made to Mathomatic V5.3:

Improved "ngcd" command.

Improved "polydivide" command.

Changes made to Mathomatic V5.4:

Improved "ngcd" command and added LCM.

Added equation validity checking.

Added Simpson's rule to the "integrate" command.

Changes made to Mathomatic V5.5:

Consolidated Mathomatic and Graph parsing routines.

Added two letter variables.

Added graph command to tutorial.

Changes made to Mathomatic V5.6:

Fixed bug created by adding two letter variables;
affects sensitivity variables.

Improved solving debug.

Added pi (p#) and e (e#) constants.

Changes made to Mathomatic V5.7:

Added print command and display of X intercepts to Mathomatic Graph.

Added VGA mode to Mathomatic Graph.

Changes made to Mathomatic V5.8:

Improved asymptote finding and X intercept reporting in Mathomatic Graph.

Added factorial operator.

Changes made to Mathomatic V6.0:

Added "help formulas".

Improved simplify command.

Improved eliminate command.

Added semicolon comments.

Changes made to Mathomatic V6.1:

Improved print command so it can output to a file.

Added GCD display to polydivide command and fixed up poly_gcd().

Added edit command.

Changes made to Mathomatic V6.2:

Fixed bug with long semi-colon comments.

Ported code to Unix.

Changes made to Mathomatic V6.3:

Added infinity support for Unix.

Added filenames to edit command.

Added factorint command.

Changes made to Mathomatic V6.4:

Improved replace command.

Changes made to Mathomatic V6.5:

Added Unix edit command.

Added more comments to source code.

Added differentiation of <constant>^x.

Improved graphing program.

Changes made to Mathomatic V6.6:

Allow integrate command in tutorial.

Recompiled with the /Gt option.

Cleaned up some code.

Changes made to Mathomatic V6.7:

Speeded up and fixed some code.

Fixed some minor bugs.

Fixed solving for 0.

Compiled registered version for 286 or higher.

Added "real" and "imaginary" commands.

Changes made to Mathomatic V6.8:

Fixed bug in "gcd" command that reported the incorrect number of
Euclidean iterations.

The shareware version now has 7 equation spaces instead of 5.

Disallowed 132 column printing because many people use laser printers.

Changes made to Mathomatic V7.0:

Fixed debug levels so that level 2 will only show solving.

Rewrote div_imaginary() to generally remove the imaginary number from
the denominator of fractions.  This makes the "real" and "imaginary"
commands work better.

Changes made to Mathomatic V7.1:

Rewrote uf_repeat() so it doesn't waste time.

Changed the "simplify" and "factor" commands.

Increased the stack size in registered version.

Limited the float to fraction converter to 6 digits in the numerator
and 6 digits in the denominator.

Change: Don't try to polynomial factor expressions with less
than 3 additive parts.

Changed solve routine: Don't juggle unless it might help and don't remove
solutions unless they are a single variable.

Changes made to Mathomatic V7.2:

Added option to factor integers to "group" and "print" commands.

Don't unfactor a variable raised to the power of an integer.
This allows manipulation of higher degree polynomials.

Changed smart division to be successful only if the expression size is
reduced 20% or more.

ufactor() and uf_simp() were not totally unfactoring expressions.
They didn't unfactor "a^(b+c)" to "a^b*a^c".  Fixed.

Changes made to Mathomatic V7.3:

Allow absolute value with "(x^2)^.5".

Added absolute value parsing "|x|".

Fixed negate operator parsing to be fully functional.

Improved elim_sign().

Changes made to Mathomatic V7.4:

Fixed simplifying (x^k1)^k2 to work with imaginary numbers.

Added code to unfactor x^2.5 as (x^2)*(x^.5) instead of x*x*(x^.5).
This allows high degree fractional powers.

Allow pointing to location of Syntax Error during expression input,
even if line is longer than 80 characters.

Changes made to Mathomatic V7.5:

Changed "simplify" command to always totally convert an equation side to
a single, simple fraction if it can.

Changed "simplify" command to do polynomial and smart division before
polynomial factoring.

Added polynomial division "Equation too big!" protection.

Polynomial division now knows when to stop and fail.

Changes made to Mathomatic V7.6:

Removed uf_repeat() from smart division.

Made minor adjustments to the "taylor" and "simplify" commands.

Mathomatic now resets the ANSI color attributes on exit.

Changes made to Mathomatic V7.7:

Consolidated "polydivide" and "gcd" commands into one "divide" command.

Enabled "print" command in Unix version.

Put polynomial factoring back before polynomial division in
the "simplify" command.

Took out div_itself().  Not needed (I think).

Changes made to Mathomatic V7.8:

Allow specifying more than one variable for "factor" command.

Allow an equation number range in the "copy" command.

Added "temp" option to "replace" command, to replace without storing.

Changes made to Mathomatic V8.0:

Limited number of primes in a variable name to 7.  Rewrote list_var() to
use a temporary string to store the variable name.

Fixed "divide" command to remove trivial factors in the displayed
polynomial GCD.  Did this by modifying "poly_gcd()".

Fixed "factor_times()" to factor "(x^2)*((x^2)^.5)".
Undone to version "8.5".

Changes made to Mathomatic V8.1:

Made Mathomatic report the amount of memory used by equation spaces.

Added call to fflush() at the main Mathomatic prompt.  This is necessary
if the standard output is redirected.

Changes made to Mathomatic V8.2:

Improved tutorial.

Took div_imaginary() out of solving.  It was making a mess of complex
equations.

Allow specifying more than one variable at a time in the "eliminate" command.

Changes made to Mathomatic V8.3:

Added solved_equation() function in "cmds.c".

Fixed simp_i() function.

Allow differentiating with respect to special variables.

Documented and fixed "derivative all" command.

The "derivative" command no longer requires the equation to be solved.
It simply differentiates the RHS.

Improved "compare" command.

Removed default action of "eliminate" command.  Variables to eliminate
must now be specified.  The default action (eliminate all variables)
usually made a mess of the current equation.

Changes made to Mathomatic V8.4:

Made polynomial factoring work with special variables.

Procedurized the ANSI color setting, for goodness sake.

Forced stdout to be unbuffered.  This makes output redirection work properly.

Changed main trivial factor routine (factor_plus()) to factor constants.

Changes made to Mathomatic V8.5:

Improved "taylor" command by simplifying derivatives more.

The "print" command can now append to a file.

Added "simplify symbolic" option.  This option removes all absolute value
operators.

Undid change made to version 8.0 in "factor_times()".
It was inefficient and messed up simplification of absolute values sometimes.

Deleted some unnecessary code.

Changes made to Mathomatic V9.0:

Made the "graph" command re-execute Mathomatic if "graph.exe" is not found.
It used to just exit to DOS.

Added "get_expr()" to "cmds.c".

Added code to do more polynomial division to simplify even more equations
when the polynomial GCD routine fails (which happens quite often,
for some reason).

"compare" now displays the simplified equations.

Fixed a bug in the "simplify" command.

Simplified "compare_recurse()" a little.

Changes made to Mathomatic V9.1:

Did some work improving simplification of expressions with "i#" in them.

Added "simplify quick" option.  With this option, Mathomatic doesn't expand
expressions raised to the power of 2 or higher, like ((x+1)^99).
And it doesn't try to move imaginary numbers from the denominator
to the numerator.

Changed all gets() functions to fgets().

Changes made to Mathomatic V9.2:

Always ending "simplify" command with "simpb_side()" now.  "simpb_side()"
is the beauty simplifier.

Changes made to Mathomatic V9.3:

Mathomatic now factors "(b^.5)+(b^1.5)" as "b^.5*(1+b)", only when it will
reduce the number of radicals.

Ported the Mathomatic User's Manual to HTML.

Split "am.c" source file into "main.c" and "am.c".

Changes made to Mathomatic V9.4:

Changed Mathomatic for MS-DOS from shareware to emailware.

Moved function prototypes to "proto.h".

Changed "simplify" command to factor "sign" variables first.

Added parsing of "+/-", automatically inserts a unique "sign" variable.

Added "case_sensitive_flag".  Set this to "true" if you want to allow
upper case variable names.  Upper case variables will be different from
lower case variables.  All commands must be typed in lower case to work,
when this flag is set.

Changes made to Mathomatic V9.5:

Improved "divide" command for polynomials.

Added prompting for a variable, if not specified on the command line,
for the following commands:
	derivative
	eliminate
	integrate
	sensitivity
	taylor

Deleted "factorint" command, because it was unimportant,
and the less commands, the better.

Added new "tally" command.  This is something I have always wanted
to balance my checkbook.

Changes made to Mathomatic V9.6:

Mathomatic now reports the degree of the polynomial during
quadratic/biquadratic solving, for the specified variable,
even if it can't solve it.

Improved display in debug level 2 of solving equations.

Removed "integrate" command, because it was junk.
Apparently the trapezoidal method and Simpson's rule
are for educational purposes only and are fairly useless.

Added optional order specification to "derivative" command.
The order specifies the number of derivatives to take (default is 1).

The UNIX/Linux version no longer uses "blt.c".  Instead a direct call
to "bcopy()" is used, since all Unixes have it.

Added option to factor integers in "calculate" command.

When an equation is entered, it is no longer automatically factored with the
"factor" command.  Instead it is simplified a little and no factoring is done.
This should be much better and less confusing.

Changes made to Mathomatic V9.7:

Made all Mathomatic input go through a single routine ("getstring()"),
to ease porting and modifications.

The "simplify" command now automatically switches to "simplify quick" mode
if the current expression becomes too big during the expansion.

Removed the print functionality from the "graph" program, because if you
print from Windows, it probably won't work (especially graphics).

Made adding and subtracting of floating point fractions return a fraction.
(1/2)+(1/3) now equals (5/6), instead of just a floating point value.

Added simplification of roots of complex numbers.

