A software package for algebraic, geometric and combinatorial problems on linear spaces

August 29, 2018: 4ti2 version 1.6.9 ("20 years of 4ti2's PPI code") is released. This is another bugfix release.

August 24, 2018: 4ti2 version 1.6.8 is released on the occasion of the Oberwolfach workshop on New Directions in Stochastic Optimisation. This is a bugfix release.

August 19, 2018: 4ti2 is now on GitHub at https://github.com/4ti2/4ti2.

News in 4ti2 version 1.6.9, compared to 1.6.8:

 * Updates to test suite.

 * qsolve/groebner code: More detailed warnings for PROJECT
   vs. PROJECT.mat

 * Fix out of bounds vector access in circuits.
   Reported by Jerry James for Fedora.

News in 4ti2 version 1.6.8, compared to 1.6.7:

 * Updates to test suite and build.

 * Fix _4ti2_rays_create_state, _4ti2_circuits_create_state.
   Reported by Alfredo Sánchez-R. Navarro.

 * Merge Debian patch for PATH_MAX on Hurd.
   Patch from Jerome Benoit.

News in 4ti2 version 1.6.7, compared to 1.6.6:

 * Add missing amsabbrvurl.bst file required for rebuilding the documentation.
   Reported by Jerome Benoit for Debian.

 * Add tests for "walk -p arb" to testsuite

 * Build fix for Debian bug 801117 (underlinked library).
   Patch from Jerome Benoit.

 * Fix division-by-zero in "walk -p arb" for testcase 344.
   Reported by Jerome Benoit for Debian.

News in 4ti2 version 1.6.6, compared to 1.6.5:

 * Fix segfault in graver when a matrix with trivial kernel is input
   (testcase graver/trivial-kernel).
   Reported by Alfredo Sanchez.

News in 4ti2 version 1.6.5, compared to 1.6.4:

 * Fix build failure with gcc 4.9.2.

News in 4ti2 version 1.6.4, compared to 1.6.3:

 * Improved error checking while reading zsolve input files.
   Reported by Sebastian Gutsche.

 * The PDF manual has been updated to include a reference to commands
   and their options and a reference to the API.  The command
   reference on www.4ti2.de has also been updated.

 * Better option handling.  Make long options available in non-GNU
   platforms such as Mac OS X.  All commands now support the
   standard --help and --version options.

 * Minor fix to the test suite.
   Reported by Luis David Garcia-Puente.

News in 4ti2 version 1.6.3, compared to 1.6.2:

 * The manual has been updated.

 * Minor build fixes.

News in 4ti2 version 1.6.2, compared to 1.6.1:

 * Use GLPK's new glp_* API instead of the old lpx_* API (declared
   obsolete in glpk 4.47 and removed in 4.52).  
   (Patch by Jerry James for Fedora.)

News in 4ti2 version 1.6.1, compared to 1.6:

 * Compile fix for XCode 5.0.2, Apple LLVM version 5.0 (clang-500.2.79).

News in 4ti2 version 1.6, compared to 1.5.2:

 * Restore the functionality of "hilbert" in versions up to 1.3.2 to
   accept "rel" files.  This signalled an error in the 1.4 and 1.5 series.
   (Note that "zsolve" did accept "rel" files in the 1.4 and 1.5 series.)

 * When the cone is not pointed, "hilbert" now outputs a "zfree" file,
   containing a lattice basis, in addition to the "hil" file.  

   Note that in the non-pointed case, Hilbert bases are not uniquely
   determined.  Let zfree_1, ..., zfree_k be the vectors in the "zfree"
   file and hil_1, ..., hil_l be the vectors in the "hil" file. 
   Then a Hilbert basis of the non-pointed cone is 
   hil_1, ..., hil_l, -(hil_1 + ... + hil_l), zfree_1, ..., zfree_k.

   (In the 1.3 series, "hilbert" silently appended the lattice
   generators to the "hil" file.  Thus the list of vectors in the
   "hil" file was not a Hilbert basis of the non-pointed cone; this
   was a bug.  Note that "zsolve" did work correctly in the 1.3

 * Fix a bug of zsolve and hilbert on 64-bit platforms (where
   sizeof(unsigned long) > sizeof(int)), which affected problems with
   more than 32 variables and could lead to wrong results. (Testcases
   a1, dutour-testcase-2013-08-21).

 * Accept longer filenames.

 * Enable shared library builds on the Cygwin platform (using the
   libtool -no-undefined flag).  (However, this requires that shared
   libraries of GMP, GLPK are available.)

 * Use gnulib to provide getopt_long if not available in the
   system libraries.

 * If the C++ compiler does not have int32_t and int64_t, use int and
   long int instead.  

 * Fixed bug in lattice transformation with too few rows.  
   (Reported by Jerry James for Fedora.)

 * Fix a build failure with gcc 4.7.
   (Patch by Jerry James for Fedora.)

News in 4ti2 version 1.5.2, compared to 1.5.1:

 * Build a GMP-only 4ti2 if the C++ compiler does not have int32_t and int64_t.

News in 4ti2 version 1.5.1, compared to 1.5:

 * Fix a build problem with --enable-shared.

News in 4ti2 version 1.5, compared to 1.4:

 * Latest version of new qsolve.

News in 4ti2 version 1.4, compared to 1.3.2:

 * Portability fixes

 * New abstract C and C++ API (callable library), header files in 4ti2/

 * New implementation of zsolve in C++
Changes in version 1.3.2

This release fixes minor bugs and portability problems. It is a source-only release, using a new build system (GNU Autotools). It has been tested on GNU/Linux (i386 and AMD64 architectures), Windows (with Cygwin), Solaris (SPARC), and Mac OS X.

New functionality in version 1.3.1

There are quite some changes and new functions with this version (compared to version 1.2).

IMA tutorial problems
Talk at IMA, 25 October, 2006