cdd HISTORY file

cdd version (date) / changes

Version C0.21 (November 10, 1993) /
 - The first version of cdd created by translating pdd.p (0.21) with 
   Dave Gillespie's p2c translator and by modifying the c-code.  The set operation
   libraries setoper.c, setoper.h (Nov.14, 1993) were created to make the code run
   without any p2c libraries.

Version C0.22 (November 21, 1993) /
 - File open procedures have been updated.

Version C0.23 (November 22, 1993) /
 - First release of cdd.

Version C0.23a, b (November 23, 1993) /
 - Few small bugs of C0.23 have been fixed.
 - Up to this version, the program can deal with column size at most 32.

Version C0.24 (November 27, 1993) /
 - Modified to be able to deal with column size (nn) larger than 32.
 - Bugs of LexMin, LexMax ordering options are fixed.

Version C0.25 (November 28, 1993)
 - The bug for mishandling the empty polyhedra input is fixed.  
   Accordingly, the new variable CompStatus (Completion Status) 
   has been added.
   
 - The procedure AddNewHyperplane and EvaluateARay have been completely 
   changed.  EvaluateARay computes A(hnew) * Ray for each Rays, and sort
   the linked list of rays so that the hnew-infeasible rays will be 
   put consecutively from FirstRay.

Version C0.26 (November 29, 1993) / 
 - FindBasis has been modified to be faster when the number of inequalities is large.
 - addition of #incidence option for outputting the cardinality of active 
   hyperplanes instead of the set of all active hyperplanes at each vertex.
 - InitBasisAtBottom option has been added to select the last set of rows
   as the initial basis (determining a simplex cone/polytope). 
   This option is {\em not\/} default. See User's manual.

Version C0.26b(December 8, 1993) / 
 - FindBasis and ComputeRank have been replaced with new programs which do not copy
   Amatrix (for save storage and time).  Accordingly, the procedure CopyAmarix has been
   removed.

Version C0.27(December 8, 1993) / 
 - It uses a new versions of setoper.h and setoper.c  (Dec 8, 1993 version) which have
   set complemen procedure   set_compl.

Version C0.31(December 20, 1993) /
 - The main program cdd.c has been divided into two parts, cdd.c and cddarith.c, the latter
   contains all the procedures dealing with floating point numbers and operations.
 - LP solver CrissCrossSolve has been added.  Now the option "maximize" can be used to
   optimize any linear function over the polyhedron.
 - The setoper library has been updated to accomodate set_card(set) function.

Version C0.32(Jan. 11, 1994) /
 - "preprojection" option has been added.  This option can be considered as a preprocessing
   of orthogonal projection of the polyhedon to a subset of variables.  That is, if the inequality
   inequality system is of form  A1 x1 + A2 x2 <= b, and the variable indices for x2, say 1, 4, 6, 7,
   are listed in the input file as
    -------------
    begin
      m   n   Type
      b  -A1  -A2
    end
    preprojection
      4  1  4  6  7
    -------------
   Then, cdd will output the inequality system,  A1 x1  <= b, together with the list R of extremal
   rays of the homogeneous cone  {z:  z >=0  and   z A2 = 0 }.  Consequently, the inequality system
   {r A1  x1  <=  r b  for  each r  in  R} represents the projection of the original polyhedron onto
   x1-space with possible redundancy.   The supplementary  C program (written by F. Margot) 
   will be used to obtain a minimal system from these two outputs.

Version C0.33(Jan. 16, 1994) /
 - partial_enumeration option has been added.  By this option, one can enumerate all vertices
   and rays which are lying on a selected set of inequalities.  The input
    -------------
    begin
      m   n   Type
      b  -A1  -A2
    end
    partial_enumeration
      4  1  4  6  7
    -------------
   restricts the enumeration for those lying on the 1st, 4th, 6th & 7th hyperplanes.
 
Version C0.34(Jan. 22, 1994) /
 - adjacency option has been added to output the adjacency list of output.
 
Version C0.35(Jan. 23, 1994) /
 - RayRecord struct has been modified to store only a pointer for a Ray vector so that
   the necessary space for the vector is allocated each time.  This saves a space for
   storing each RayRecord.

Version C0.36(Jan. 23, 1994) /
 - RayRecord struct has been modified to store only a pointer for a ZeroSet so that
   the necessary space for the set is allocated each time.  This saves a space for
   storing each RayRecord ZeroSet.  For this modification, the setoper library
   must have been changed so that set_initialize allocates the minimum space.
   Note that this new version (Jan. 23, 1994) does not work with the older cdd
   programs.

Version C0.37(Jan. 25, 1994) /
 - Amatrix struct has been modified to store only the row pointers.

Version C0.38(Jan. 31, 1994) /
 - Bmatrix struct has been modified to store only the row pointers.  Thus the program
   does not use any 2-dim arrays, and uses mainly dynamic allocation memory as much
   as necessary irrespective of the declared maximum size  MMAX times NMAX.
   Thus, even in Macintosh computers large problems can be solved.
 - CrissCrossSolve LP solver has been updated to output dual solutions as well.

Version C0.50 (Feb. 7, 1994) /
 - Major upgrade to implement a new data structure to store adjacencies of rays.
   The adjacency record lists, Edges(iteration), are used to store only necessary 
   adjacencies for each iteration.  This version runs much faster unless
   a dynamic ordering of rows (i.e. maxcutoff or mincutoff) is chosen.  
   The users are strongly discouraged to use these dynamic ordering options.

Version C0.51 (Feb. 12, 1994) / 
 - Some bugs of Version C0.50 has been fixed.
 - The option "algebraic" for selecting the algebraic adjacency computation
   is deleted.  The reason is the combinatorial adjacency computation
   is almost always faster.
 - The option "minimize" is implemented to minimize a linear function over
   the polytope.  Previously, only "maximize" was supported.
 - The option "find_interior" has been added to compute an interior point
   the input polyhedron.

Version C0.51a (Feb. 16, 1994) /
 - A bug of Version C0.51 (mishandling of empty polyhedron) is fixed.
 
Version C0.51b (March 9, 1994) /
 - A bug of Version C0.51a (mishandling of non full-dimensional
   polyhedron) is fixed. The bug was reported by Alexander Bockmayr of
   Max-Planck Institute.
 
Version C0.51c (March 15, 1994) /
 - A bug of Version C0.51b (mishandling of homogeneous inputs, i.e. zero RHS)
   is fixed. This bug was reported by Alexander Bockmayr of
   Max-Planck Institute.

Version C0.52 (March 21, 1994) /
 - A bug of Version C0.51c generating segmentation fault when the option
   preprojection is used is fixed. This bug was reported by Alexander Bockmayr of
   Max-Planck Institute.
 - Some structural changes in the programs, cdd.c and cddarith.c, have been made
   mainly for a future planning of adding an option to decompose a problem into 
   smaller subproblems.

Version C0.52a (March 28, 1994) /
 - A bug of Version C0.52 generating unnecessary information when
   maximize, minimize and find_interior are chosen is fixed.

Version C0.51d (March 28, 1994) /
 - Because of the slowness of Version 0.52* due to unknown reasons, this version
   has been produced for a temporary replacement.  This version fixes the bug
   mentioned in Version C0.52 release.

Version C0.52b (March 28, 1994) /
 - The slowness problem of Version C0.52(a) is fixed.
 
--- end of file: cddHISTORY ---
