= zn_poly = == Description == zn_poly is a C library for polynomial arithmetic in Z/nZ[x], where n is any modulus that fits into an unsigned long. Website: http://cims.nyu.edu/~harvey/zn_poly/ == License == GPL V2 or V3. Some of the code has been copied from other projects - see the file src/COPYING for details. == SPKG Maintainers == * David Harvey == Upstream Contact == * David Harvey == Dependencies == * GMP/MPIR * (some) Python (to create the Makefile) * GNU patch * NTL apparently only if we configured zn_poly differently (same for FLINT) == Special Update/Build Instructions == * Make sure the patches still apply. Especially changes in `makemakefile.py` may also require changes to `spkg-install` (and perhaps also `spkg-check`). * There's also a `--use-flint` option to `configure`; no idea what it does, and we currently don't use it either. * TODO: - Use `make install` instead of manually "installing" (copying and sym- linking) the [shared] libraries and header files. This requires further tweaking of `makemakefile.py`, since it currently only installs a static library and the headers. - If everything's fine, i.e., no problems arise, some comments and especial- ly some code I currently just commented out can certainly be removed. (-leif, 04/2012) === Patches === * makemakefile.py.patch: Improves the Python script creating the Makeefile for better use at least within Sage; see patch for details. (Last modified at #12433, which added and changed a lot.) * profiler.c.patch, zn_poly.h.patch: Fix potential redefinition of `ulong` (in combination with other headers). * mpn_mulmid-tune.c.patch, mulmid-tune.c.patch, mul-tune.c.patch: Fix "jump into scope of identifier with variably modified type" errors. (See #8771). * mpn_mulmid-test.c.patch: Fix a potential problem when the value of ZNP_mpn_smp_kara_thresh is SIZE_MAX, this is usually irrealistic but can happen at least on linux on power7 with gcc-4.7.1 (see #14098). * fix_fudge_factor_in_nuss-test.c.patch: As the name says; fix provided by upstream (David Harvey); see #13947. == Changelog == === zn_poly-0.9.p11 (Leif Leonhardy, May 24th, 2013) === * #13947: Fix `nuss_mul()` test failing especially if tuning happened under "heavy" load (at least on MacOS X and Cygwin) Add `fix_fudge_factor_in_nuss-test.c.patch`; fix suggested by David Harvey. === zn_poly-0.9.p10 ( Francois Bissey, 14 February 2013 ) === * Trac #14098: Fix a potential problem with the tests where values can get out of range. The problem occurs only in rare case but the code is more sane that way. The fix was gracously provided by the original zn_poly author. === zn_poly-0.9.p9 (Jeroen Demeyer, 28 May 2012) === * Trac #12751: remove the gcc-4.7.0 workaround for ia64 since this bug has been fixed in gcc-4.7.1 and we will not fully support building Sage with gcc-4.7.0 on Itanium. * Don't override user-set CFLAGS and CXXFLAGS. === zn_poly-0.9.p8 (Leif Leonhardy, April 20th, 2012) === * #12433: Further reviewer changes / additions. * Work around GCC 4.7.0 bug on ia64 (by almost completely disabling optimi- zation if the compiler is GCC 4.7.x, of course only on that platform); cf. #12751, #12765. * Add a patch to avoid conflicting definitions (i.e., redundant `typedefs`) of `ulong`, by changing `ulong` to a macro. * Don't hardcode the zn_poly version number in `spkg-install`; instead read it from the file `VERSION`, like the generated `makefile` does. * Remove some of the code previously just commented out, as well as some obsolete comments. * Document patches (and correct ticket reference in an old changelog entry). === zn_poly-0.9.p7 (Leif Leonhardy, April 8th, 2012) === * #12433: Reviewer changes. * Restore upstream sources. (One file in `src/tune/` was already patched.) * Remove the obsolete Debian `dist/` directory. * Use `patch` to apply the patches. * Remove `patches/` from `.hgignore`! (And remove the prepatched files.) * Add Python to the dependencies, since (some) Python is needed to create the Makefile during build / `configure`. (`spkg/standard/deps` already reflects this.) * Rework (upstream's) `makemakefile.py` to create a proper Makefile, respecting `CC`, `CXX`, `CFLAGS`, `CXXFLAGS`, `CPPFLAGS` etc. with their *usual* meaning (i.e., not using `CPP` to compile C++!), and using `LDFLAGS` consistently, also not hardcoding e.g. `-m64` (which was added by Sage). * Do not add `-O3` to `CFLAGS` (in `spkg-install`) without the possibility to get overridden by user-provided `CFLAGS`. Also honor `SAGE_DEBUG=yes` by completely disabling optimization in that case. * Fix typo in `spkg-check`, which certainly would break building the test program when `SAGE64=yes`. (Although it is actually already built from within `spkg-install`.) * Clean up `spkg-install` and `spkg-check`; redirect error messages to `stderr`, add more error checks, use `$MAKE` in `spkg-check` as well, quote more environment variables, use `cp [-f]` instead of `$CP`, don't create an absolute symbolic link on Cygwin. === zn_poly-0.9.p6 (R. Andrew Ohana, February 4th, 2012) === * #12433: Make spkg respect global CC flag === zn_poly-0.9.p5 (David Kirkby, July 14th, 2010) === * #9358 Ensure that spkg-install can handle the case of where SAGE64=yes and Solaris with a Sun linker. Previously this worked properly if SAGE64 was yes, OR if the operating system was Solaris with the sun linker. But spkg-install failed to work properly if both SAGE64=yes AND the operating system was Solaris with the Sun linker. * No longer run 'make check' from spkg-check. Since this was quick to run it has already been run from spkg-install, so it was pointless running it from spkg-check too. Instead a much more comprehensive test suite is run, using $ test/test all * Change the dependancy from GMP to MPIR in this SPKG.txt file, as Sage no longer uses GMP. === zn_poly-0.9.p4 (Willem Jan Palenstijn, William Stein, April 26th, 2010) === * Ticket #8771: Fix build error on gcc 4.5, and check if make tune succeeded. * Added more checks for errors in spkg-install. === zn_poly-0.9.p3 (Jaap Spies, February 21th, 2010) === * Ticket #8178: if SAGE64=yes we set CFLAGS appropriate. In patches/makemakefile.py we add $(LDFLAGS) when we build the shared library. This works for Darwin and Open Solaris. === zn_poly-0.9.p2 (Mike Hansen, February 15th, 2010) === * Ticket #8280: cygwin: zn_poly shared library named incorrectly on cygwin === zn_poly-0.9.p1 (David Kirkby, June 29th, 2009) === * Ticket #6443 A GNUism in zn_poly-0.9.p0 causes linking problems wiith Sun's linker This was an easy fix - just substitue -soname for -h in src/makemakefile.py I did this with a sed script in spkg-install === zn_poly-0.9.p0 (Michael Abshoff, September 26th, 2008) === * remerge OSX 64 bit fixes * clean up spkg-install === zn_poly-0.9 (David Harvey and Timothy Abbott, September 19th, 2008) === * updated to zn_poly-0.9 * shared versioning filename issues * re-enabled test suite (now only takes ~10 seconds) * updated upstream URL === zn_poly-0.8.p2 (Michael Abshoff, August 19th, 2008) === * Add 64 bit OSX build support === zn_poly-0.8.p1 (Michael Abshoff, June 9th, 2008) === * Do not run the test suite per default any more (#3386) === zn_poly-0.8.p0 (David Harvey, April 4th, 2008) === * updated to zn_poly-0.8 (fix minor bugs and memleaks) * updated SPKG.txt === zn_poly-0.8 (David Harvey, April 2nd, 2008) === * updated to zn_poly-0.8.alpha0 * updated SPKG.txt * changed spkg-install to run tuning program, test suite === zn_poly-0.4.1.p0 (Michael Abshoff, March 19th, 2008) === * updated SPKG.txt * add hg repo, hg ignore * cleaned up spkg-install === zn_poly-0.4.1 (David Harvey, Dec. 18th, 2007) === * created spkg from zn_poly-0.4.1