----------------------------------------------------------------------------
   Logfile for changes to the BDD package
----------------------------------------------------------------------------

+  means added code
x  means bugfix or changed code
-  means removed code

Thanks to the following people for bug reports, suggestions and source code:
  Alan Mishchenko
  Gerd Behrmann
  Henrik Hulgaard
  Henrik Reif Andersen
  Jacob Lichtenberg
  Ken Larsen
  Nicola Soranzo
  Nikolaj Bjorner


VER 2.2 (november 2002)
-----------------------
  + Added bvec_ite() for calculating an if-then-else operation on
    a boolean vector.
  x Fixed some garbage collection problems introduced in version 2.1.


VER 2.1 (march 2002)
--------------------
  + Added bdd_allsat() for calculating all possible variable assignments
    to a bdd.
  x Fixed some wrong garbage collection #defines in kernel.h. If you
    haven't experinced any problems using BuDDy, then this should not
    be an issue. No bug reports reported for this one - found by code
    inspection thanx to Nicola Soranzo.
  x Fixed some copy paste errors in the prime number calculation.
    This should not be an issue. No bug reports reported for this one
    - found by code inspection thanx to Nicola Soranzo.


VER 2.0 (march 2001)
--------------------
  x Change the copyright notice to a more acceptable form.
  x Speedup changes in bdd_support()
  x Rewrote all the prime number calculations in order to get the
    copyright right.


VER 1.9 (august 2000)
---------------------
  + Added bdd_pathcount
  + Added bdd_anodecount
  + Added bdd_buildcube, bdd_ibuildcube
  x Bugfix in bdd_satcountset and bdd_satcountlnset. This corrects a bug
    introduced in version 1.8.
  x bug fixes in bdd_constraint and bdd_simplify. Both did calculate a
    correct cofactor, but not necessarily a minimal one. Changed the name
    of bdd_constraint to bdd_constrain at the same time.
  x bug fix in memory allocation for bdd_addvarblock
  x Changed functions in bddop.c in order to avoid some compiler warnings.
  x Makefile also installs "fdd.h" and "bvec.h".
  x Small #include fix in N-Queen example.
  x Minor changes in the documentation.


VER 1.8 (may 2000)
------------------
  + Bugfix in the kernel: canonicity was not unfortunately not guaranteed
    on certain compilers (at least the microsoft visual C compiler) due to a
    signed/unsigned bug in kernel.c (and actually not microsofts fault).
  + Speedups in the reordering code.
  + Added the use of an interaction matrix for variable swapping.
  + Added bdd_satoneset
  + Added bdd_getallocnum
  + Added bdd_setvarorder
  + Added bdd_unique, bdd_appuni.
  + Added bvec_shlfixed, bvec_shrfixed and changed the prototype for
    bvec_shl and bvec_shr.
  + Added bvec_mulfixed, bdd_divfixed, bdd_div and changed the
    prototype for bvec_mul.
  + Added bdd_printstat
  + Added new examples: solitare and money
  + Forces cache tables to prime-number size.
  + Added bdd_clear_error() if anybody needs that.
  + Added reorder method WIN3 and WIN3ITE
  x Small change in queen.cxx - with a huge impact on runtime!
  x Bugfix in reordering. In some cases reordering would go on forever;
    first reroder, then retry, then reorder again without resize etc. always
    reordering in the same operation. Now at most one reordering is allowed
    for each bdd operation.
  x Bugfix in C++ printing in Dot format. Wrote zero for one and vice versa.
  x Bugfix in the garbage collector. If bdd_setmaxincrease was used, then
    BuDDy would call bdd_error prematurely. Not a major bug, but annoying.
  x Bugfix in bdd_load.
  x Speedup in bdd_satcountset and bdd_satcountlnset
  x Updates to the docs.
  x Updates to the makefiles


VER 1.7 (september 1999)
------------------------
  +  Added support for boolean vector operations used in integer arithmetics
  +  Split "bdd.h" into "bdd.h", "fdd.h" and "bvec.h"
  +  Added bdd_cachestats
  +  Added bdd_and, bdd_or, bdd_xor, bdd_impl, bdd_biimpl
     (wrappers for bdd_apply).
  +  Added a BDD calculator for combinatorial circuits as an example.
  +  Added an example showing the use of the FDD interface.
  +  Added bdd_autoreorder_times, bdd_getreorder_method, bdd_getreorder_times,
     bdd_reorder_probe, bdd_enable_reorder, bdd_disable_reorder,
     bdd_var2level, bdd_level2var, bdd_reorder_gain, bdd_swapvar
  +  Added bdd_file_hook, bdd_strm_hook, fdd_file_hook, fdd_strm_hook
  +  Added support for dynamic resizing of the operator caches with
     the function bdd_setcacheratio.
  +  Added more documentation.
  x  Bugfix in reordering code. This would appear when recursive variable
     blocks were defined (blocks with sub-blocks).
  x  Speedup changes in the variable reordering code
  x  The automatic reordering threshhold function has been changed
  x  Automatic reordering is now interrupting and restarts bdd operations
  x  Prototype for bdd_reorder_hook changed.
  x  Printing of reorder information (verbose level > 0) is changed.
  x  The threshold for stopping of the iterative reordering methods has
     been changed. The reordering now continues until no progress is done
     at all (before it would stop when less than 5% where gained).
  x Added a few sanity checks to many of the functions.
  x Bugfix (parameter checking) in fdd_ithvar.
  - bdd_varlevel removed (use bdd_var2level and bdd_level2var).


VER 1.6 (november 1998)
-----------------------
  +  Added bdd_resetpair
  +  Added bdd_satcountset, bdd_satcountlnset
  +  Added macro bdd_relprod
  +  Added fdd_overlapdomain
  +  Added fdd_domain
  x  Fixed a bug in bdd_setvarnum and bdd_extvarnum.
  x  Fixed a bug in bdd_newpair() which would give problems with reordering.
  x  Speedup changes in bdd_exist, bdd_forall, bdd_appex, bdd_appall
  x  Speedup changes in bdd_restrict
  x  Changed bdd_gbc_hook to include both pre and post garbage collection.


VER 1.5 (september 1998)
------------------------
  +  Added bdd_cofactor
  +  Added and fixed some error checks in fdd.c
  x  Fixed a bug in bdd_setvarnum().


VER 1.4 (july 1998)
-------------------
  The package just got a name: BuDDy
  +  Added functions bdd_compose, bdd_veccompose, bdd_ite.
  +  Added functions bdd_setbddpair, bdd_setbddpairs.
  +  Added functions bdd_var, bdd_low, bdd_high.
  +  Added technical documentation in docs/tech.txt
  x  Overloaded C++ functions are not used any more. This mainly changes
     the name of the printing functions in C++.
  x  Changed datatype names (You'll hate me for this one):
        BddPair -> bddPair
	BddStat -> bddStat
	BddGbcStat -> bddGbcStat
  x  Added slightly more documentation.
  x  Some internal changes to the code - should not be visible to users.


VER 1.3 (june 1998)
-------------------
  x  Fixed a few serious bugs in the reordering code


VER 1.2 (june 1998)
-------------------
  +  Added support for dynamic variable reordering
  +  Added reordering handler (bdd_reorder_hook)
  +  More added to the docs
  x  Changed the event handlers (bdd_xxx_hook)


VER 1.1 (april 1998)
--------------------
  +  Added bdd_varprofile
  +  Added fdd_scanset
  +  Mucho better documentation.
  +  Added Henrik Reif Andersen's BDD notes to the documentation.
  +  Added BDD_REORDER_RANDOM for test purposes (usefull for others?)
  x  Fixed a bug in bdd_appex and bdd_appall.
  x  Fixed a bug in bdd_simplify.
  x  Speed fixup to fdd_extdomain 
  x  Lots of small (insignificant?) bug fixes in fdd.c.
  x  bdd_load/save updated to take reordering into account.
  x  Generalized bdd_restrict to use a BDD variable set.
  x  Fixed the identifiers for the operator caches.
  x  The math functions log1p and pow2 has been removed as they didn't
     exist on some systems. The same applies to M_LN2.
  x  New file structure and makefiles.
  -  Removed bdd_break, bdd_restart1


