1Release 2.5.0 of Cudd introduces the ability to set timeouts.  The
2function that is interrupted returns NULL (which the application must
3be prepared to handle,) but the BDDs are uncorrupted and the invoking
4program can continue to use the manager.
5
6In addition, reordering is now aware of timeouts, so that it gives up
7when a timeout is approaching to give the invoking program a chance to
8obtain some results.
9
10The response time to the timeout is not immediate, though most of the time
11it is well below one second.  Checking for timeouts has a small overhead.
12In experiments, less than 1% has been observed on average.
13
14Creation of BDD managers with many variables (e.g., tens or hundreds
15of thousands) is now much more efficient.  Computing small supports of
16BDDs when there are many variables is also much more efficient, but
17this has been at the cost of separating the function for BDDs and ADDs
18(Cudd_Support) from that for ZDDs (Cudd_zddSupport).
19
20The C++ interface has undergone a major upgrade.
21
22The handling of variable gruops in reordering has been much improved.
23(Thanks to Arie Gurfinkel for a very detailed bug report!)  A handful
24of other bugs have been fixed as well.
25
26
27New Functions:
28
29unsigned long Cudd_ReadStartTime(DdManager *unique);
30
31unsigned long Cudd_ReadElapsedTime(DdManager *unique);
32
33void Cudd_SetStartTime(DdManager *unique, unsigned long st);
34
35void Cudd_ResetStartTime(DdManager *unique);
36
37unsigned long Cudd_ReadTimeLimit(DdManager *unique);
38
39void Cudd_SetTimeLimit(DdManager *unique, unsigned long tl);
40
41void Cudd_UpdateTimeLimit(DdManager * unique);
42
43void Cudd_IncreaseTimeLimit(DdManager * unique, unsigned long increase);
44
45void Cudd_UnsetTimeLimit(DdManager *unique);
46
47int Cudd_TimeLimited(DdManager *unique);
48
49unsigned int Cudd_ReadMaxReorderings (DdManager *dd);
50
51void Cudd_SetMaxReorderings (DdManager *dd, unsigned int mr);
52
53unsigned int Cudd_ReadOrderRandomization(DdManager * dd);
54
55void Cudd_SetOrderRandomization(DdManager * dd, unsigned int factor);
56
57int Cudd_PrintGroupedOrder(DdManager * dd, const char *str, void *data);
58
59int Cudd_EnableOrderingMonitoring(DdManager *dd);
60
61int Cudd_DisableOrderingMonitoring(DdManager *dd);
62
63int Cudd_OrderingMonitoring(DdManager *dd);
64
65DdNode * Cudd_bddExistAbstractLimit(DdManager * manager, DdNode * f, DdNode * cube, unsigned int limit);
66
67DdNode * Cudd_bddIteLimit (DdManager *dd, DdNode *f, DdNode *g, DdNode *h, unsigned int limit);
68
69DdNode * Cudd_bddOrLimit (DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
70
71DdNode * Cudd_bddXnorLimit (DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
72
73int Cudd_CheckCube (DdManager *dd, DdNode *g);
74
75DdNode * Cudd_bddMaximallyExpand(DdManager *dd, DdNode *lb, DdNode *ub, DdNode *f);
76
77DdNode * Cudd_bddLargestPrimeUnate(DdManager *dd , DdNode *f, DdNode *phaseBdd);
78
79int Cudd_Reserve(DdManager *manager, int amount);
80
81int Cudd_SupportIndices(DdManager * dd, DdNode * f, int **indices);
82
83int Cudd_VectorSupportIndices(DdManager * dd, DdNode ** F, int n, int **indices);
84
85DdNode * Cudd_zddSupport(DdManager * dd, DdNode * f);
86
87
88Changed prototypes:
89
90unsigned int Cudd_ReadReorderings (DdManager *dd);
91
92----------------------------------------------------------------------
93
94Release 2.4.2 of Cudd features several bug fixes.  The most important
95are those that prevented Cudd from making full use of up to 4 GB of
96memory when using 32-bit pointers.  A handful of bugs were discovered by
97Coverity.  (Thanks to Christian Stangier!)
98
99This release can be compiled with either 64-bit pointers or 32-bit
100pointers on x86_64 platforms if sizeof(long) = sizeof(void *) = 8 and
101sizeof(int) = 4.  This is known as the LP64 model.  For 32-bit pointers,
102one usually needs supplementary libraries.  On Ubuntu and Debian Linux,
103one needs g++-multilib, which can be installed with
104"apt-get install g++-multilib."
105
106Added functions
107
108DdNode *Cudd_Inequality (DdManager * dd, int  N, int c, DdNode ** x,
109DdNode ** y);
110
111DdNode * Cudd_Disequality (DdManager * dd, int  N, int c, DdNode ** x,
112DdNode ** y);
113
114DdNode * Cudd_bddInterval (DdManager * dd, int  N, DdNode ** x,
115unsigned int lowerB, unsigned int upperB);
116
117Changed prototypes:
118
119int Cudd_DumpBlif (DdManager *dd, int n, DdNode **f, char
120**inames, char **onames, char *mname, FILE *fp, int mv);
121
122int Cudd_DumpBlifBody (DdManager *dd, int n, DdNode **f, char
123**inames, char **onames, FILE *fp, int mv);
124
125The additional parameter allows the caller to choose between plain blif
126and blif-MV.
127
128----------------------------------------------------------------------
129
130Release 2.4.1 of Cudd features one major change with respect to previous
131releases.  The licensing terms are now explicitly stated.
132