CHANGELOG (summary of changes for each release)

version 0.9.2 (2019-01-06)
==========================

* fixed unsafe use of printf [!1]
* added support for Python 2.6 and Python 3 in the build system [!2, !3]


version 0.9.1 (2018-10-04)
==========================

* first new "release" in almost exactly 10 years!
* new upstream sources at https://gitlab.com/sagemath/zn_poly
* merged various minor downstream patches; specifically those from Sage
* added support for building a DLL for zn_poly on Cygwin
* other minor build cleanup; tuning is now done automatically by default,
  but can be disabled with `./configure --disable-tuning`


version 0.9 (2008-10-22)
========================

(note: sage 3.1.3 includes a prerelease version of zn_poly 0.9, whose makefile
is a bit different)

* new features:
   * implemented "make check"
   * KS polynomial middle products
      * implemented basecase/karatsuba integer middle product at mpn level
      * automatic tuning for KS1/KS2/KS4/FFT middle products
      * zn_array_mulmid now never falls back on zn_array_mul
   * shared versioning .so library filenames for for Debianisation (thanks
     Timothy Abbott)
   * dylib64 target (thanks Michael Abshoff)
   * new zn_mod_get() function

* bug fixes:
   * hopefully fixed a hard-to-reproduce bug where the cycle counter
     calibration code ludicrously overestimates the clockspeed (reported by
     Thomas Keller)

* interface changes:
   * changed "midmul" everywhere to "mulmid"

* other stuff:
   * rearranged directory structure
   * massive code reorganisation and reformatting
   * minor simplifications to pmfvec fft code


version 0.8 (2008-04-04)
========================

* improved multiplication speed for odd moduli (via REDC modular reduction,
  and a few other tricks)
* major rewrite of profiling/tuning code -- tuning is now much faster and
  more accurate
* power series reciprocal via newton iteration (currently only efficient for
  high degree problems; currently only works for monic series)


version 0.7 (2008-03-04)
========================

* specialised code for squaring (KS, nussbaumer, FFT)


version 0.6 (2008-02-15)
========================

* middle products via Schonhage/Nussbaumer FFT
* zn_array_midmul_fft_precomp1_t for preconditioned middle products
* automatic tuning for KS vs FFT multiplication
* made wide_arith.h a standalone file


version 0.5 (2008-01-21)
========================

* Schonhage/Nussbaumer FFT multiplication code
* example program: bernoulli numbers mod p
* lots and lots of other things


version 0.4.1 (2007-12-18)
==========================

* fixed up warnings in tuning file for 32-bit machine
* added .dylib and .so support to makefile


version 0.4
===========

* added zn_mod_neg, zn_mod_mul, zn_mod_sub


version 0.3
===========

* added zn_array_midmul() (stub for middle products)
* added zn_array_copy()
* added zn_poly_version_string()
* "make install" now copies wide_arith.h as well as zn_poly.h;
  the dest directory is now <path>/include/zn_poly, not <path>/include


version 0.2
===========

* automatic tuning for KS1 vs KS2 vs KS4
* cycle counting on powerpc
* simple configure/build system
* generic MUL_WIDE etc definitions


version 0.1
===========

* initial release
