Revision history for Perl extension Math::Polynomial::Solve.

2.53_2
     Aug 26 2010
	- Added another (cubic) test to cubic.t and poly0.t.
     Aug 25 2010
	- CPAN testers found a failing test in sturm0.t for some machines.
	  Altered the test to make use of fltcmp(), which I hope will solve
	  what I suspect is a precision problem.
	- Made consistent the book references in the Acknowledgements section.
2.53_1
     Aug 23 2010
	- poly_real_roots() becomes poly_real_root_count().
	- Added test files sturm0.t and sturm1.t.
	- Many documentation additions. Of note: the documentation
	  notes the FUTURE DEPRECATION of set_hessenberg() and
	  get_hessenberg().
	- Set $VERSION to reflect beta condition, particularly
	  the (lone) sturm function.
     Aug 14 2010
	- Added poly_real_roots().
     Jul 22 2010
	- Added the functions to create the sign rows, currently named
	  sturm_sign_minus_infinity(), sturm_sign_plus_infinity(), and
	  sturm_sign_chains().
     Jul 21 2010
	- Added function poly_sturm_chain(). Started a test file for it.
	- Added a test file for the poly_division() function and of course
	  made the function available under the :utility tag.
     Jun 24 2010
	- Stefan Petrea suggested adding Sturm's sequence to the module.  After
	  looking it up, it seemed like a good idea, so I began by:
	- Added poly_derivative() to the export list and to the :utility tag.
	- Added poly_antiderivative() to the export list and to the :utility
	  tag, mostly for completeness's sake, although I may find a legitimate
	  use for it.
     Jun 22 2010
	- Added epsilon() to the export list and to the :utility tag. It
	  existed in v2.52, I just forgot to add it, to the export list.
	- Formatting changes to the POD with respect to the functions'
	  documentation.

2.52
     Jun 16 2010
	- Added export tags. You can export the analytic functions
	  linear_roots(), quadratic_roots(), cubic_roots(), and quartic_roots()
	  via the :classical tag; poly_roots(), get_hessenberg(), and
	  set_hessenbert() via the :numeric tag; and poly_evaluate() and
	  simplified_form() via the :utility tag.
	- Fixed spelling error, mostly in the comments: it's "resolvent" cubic,
	  not "resolvant".
	- Documentation upgrade, particularly for poly_roots(), which was
	  worded a little funny given the change from the default solving
	  method in version 2.50. Added documentation for the new export tags
	  and the new functions.
     Jun 15 2010
	- Strunk & White'd the possesive form of Dr. Nickalls's name.
	  (I'm not sure how Strunk & White would react to verbing their names.)
	  I had randomly dropped the 's' before or after the apostrophe.
	- Opened up the internals a bit by providing a a simplified_form()
	  function that removes leading zero coefficients and divides the
	  remaining coefficients by the coefficient of the highest power.
     Jun 14 2010
	- Added a poly_evaluate() function to return y values of the
	  polynomial at given x values. Partly done for my own testing but
	  it's too useful not to provide generally.
2.51
     Jun 1 2010
	- Jean Connelly found a quartic where $g is greater than $epsilon,
	  but $g**2 isn't. Since it's the squared value that's used in
	  Ferrari's method, we eventually wind up dividing by zero.
	  This is a floating point representation sample that slipped
	  past my tests (which up to now were all based on integers).
	  Changed the check to use $g**2, since that's what we're
	  protecting ourselves from anyway.
	- Connelly's case is 0.9216 times an integer coeffecient set. Put
	  the integer version in poly0.t, and then created the floating point
	  tests in the new file polyfp0.t by taking the poly0.t tests and
	  multiplying everything by 0.9216. I'll extend this later.
	- Added Dr. Nickalls's quartic article to the distribution. Both of
	  his articles are in the subdirectory "reference".
     Apr 19 2010
	- Bowed to convention and reversed the order of the Change entries.
	  (And moved an obviously out-of-place Change entry to its proper
	  position).
	- Added Dr. Nickalls's article to the distribution, with his permission.
	- Abandoned backward compatibility with perl version 5.05, which was
	  present despite the 5.6 requirement in Build.PL (I was supporting
	  the module on a very old server). The module now requires version 5.6,
	  which admittedly isn't cutting edge but does allow more modern
	  constructs like 'our'.

2.50 Mar 7 2009
	- Function poly_roots() now uses the QR Hessenberg method by
	  default.  To return to the old version's behavior, use
	  set_hessenberg(0).
	- Update tests and documentation to reflect this.
	- Update Dr. Nickalls's e-mail address and his paper's url.

2.12 Jan 28 2009
	- Add "requires" item in Build.PL to insist on a Math::Complex
	  version greater than 1.36.  This makes the Complex.txt file
	  unnecessary since I won't have to explain about the old
	  bug in the Im() function.

2.11 Feb 19 2007
	- Andy Stein sent me cubic.m, an update to Herman Bruyninckx's
	  matlab script. The script is in the eg directory.
	- Change all debugging code to use Smart::Comments.
	  Replaces not only debug print statements but also the
	  show_matrix() subroutine.
	- Found some "$var = $var op ..." code that is now
	  "$var op= ..." in hqr_eigen_hessenberg().
	- More documentation changes.
	- Found a spot where $#coefficients was used where @coefficients
	  would be less likely to cause an infinite loop.
     Sep 5 2008
	- Added some quadratic tests.

2.10 Jul 4 2006
	- Released.

2.00 Feb 18 2004
	- For some idiotic reason, I thought that I had already uploaded the
	  module to CPAN.  Time to rectify that mistake.
	- Well, as long as I'm here, reviewed the code again, and found some
	  inconsistant epsilon comparisons ('<' vs. '<=').  Changed them all
	  to '<'.
	- Double-checked the links too.  Dr. Nickalls's article keeps moving
	  around
     Apr 3 2006
	- Upgraded the test files to use Test::Simple.
	- Moved the internal structure of the module directory around
	  to match the current layout made by the current h2xs.
	- Added a Build.PL file.
	- Generated a Meta.yml file and a Makefile.PL from Build.PL
	- Added new tests to cubic.t to cover catastrophic
	  cancellation conditions.
	- Re-factored an expression in the ($dis < -$epsilon) branch
	  of cubic_roots(), in preparation for tracking down the
	  cancellation error.  This is the branch that was failing
	  the tests for certain values of the leading coefficient
	  (a negative, for one thing).  Wouldn't you know, the tests
	  passed after doing this.  I suspect that this will not be the
	  final chapter in this story.
	- Updated the link to www.2dcurves.com in the documentation.
     Jun 26 2006
	- Added a test to poly1.t (x**5 + x + 1).  Nothing special
	  except that it's solvable in radicals, and there was an
	  article on Galois theory that missed that.

1.99 April 30 2003
	- More documentation changes, including updating links to Dr.
	  Nickalls's paper.
	- Added many, many more tests.
	- Added the set_ and get_hessenberg() functions.
	- Put some code that was in a text file in one of the helper
	  perl files.

1.90 March 17 2003
	Nick Ing-Simmons had been working on a perl binding to the GNU
	Scientific Library that performed, among other things, polynomial
	solving.  He graciously (indeed, FAR beyond the call of duty)
	provided a perl version the Fortran code written by Hiroshi
	Murakami, and gave me permission to use the perl version of the code
	in this module (as Hiroshi Murakami gave permission to Nick Ing-Simmons).
	For further information on his efforts, see Math::GSL::Polynomial.
	Putting in the code resulted in:
	- Some formatting changes.  Sorry, I'm a tab user.
	- Removal of some redundant code.  Math::Polynomial::Solve
	  already calculated epsilon, and the wrapper function already
	  removed leading zero coefficients.
	- Coefficients to be passed in from higher power to lower,
	  rather than the reverse.  This matches current usage in this
	  module.
	- Roots to be returned as Complex number objects, rather than paired
	  real and imaginary parts.
	- An early return for the really simple case.

1.01
	- Web site address of Karl's Calculus Tutor has changed.  Document
	  changed with it.
	- Code that popped off leading zero coefficients was flawed.
	  Negative values could get popped off too since the check was
	      $coefficients[0] <= $epsilon
	  instead of
	      abs($coefficients[0]) <= $epsilon.
	- Began writing code for symbolic solutions.
	- And then I got the e-mail from Nick Ing-Simmons.

1.00 Wed Feb 14 17:51:04 2001
	- original version

