f155d9a0ba
-------------------------------------------------------------------------- NEWS for version 1.1 (released on October 28, 2013) -------------------------------------------------------------------------- New and Changed Features ======================== o Added a new operator on polyhedra: the positive time elapse. o In the Java language interface: - The constraint/generator/... system classes now extend the ArrayList generic container (rather than Vector); - Variable objects are now built from a long (rather than int) value, thereby matching the type used elsewhere for space dimensions; - added new static method to Variable class void setStringifier(Variable_Stringifier) where Variable_Stringifier is an interface allowing for customization of the output routine for variable's names (see example in interfaces/Java/tests/Variable_Output_test1.java); - added value NOT_EQUAL to enumeration Relation_Symbol. Bugfixes ======== o Portability improved. o Fixed a precision regression in Polyhedron method void drop_some_non_integer_points(const Variables_Set&, Complexity_Class); o In the Java language interface, fixed a C++/Java conversion error whereby the construction of a valid Variable object in JNI code was leading to an exception being thrown. The bug has only been observed on 32-bit builds. o In the Java interface, fixed declaration of methods void drop_some_non_integer_points(...); so as to accept a Complexity_Class enum value. o Fixed an issue in method MIP_Problem::OK() whereby the method was trying to enforce a non-invariant condition. -------------------------------------------------------------------------- NEWS for version 1.0 (released on June 28, 2012) -------------------------------------------------------------------------- New and Changed Features ======================== o Significant improvements have been obtained in both time and space resource usage by the definition of data structures and algorithms for the case of "sparse rows", i.e., sequences of coefficients where most of the values are zero. o The library fully supports two different representations for rows: the "dense" representation is an array-like representation tailored to sequences having most of their coefficients different from zero; the "sparse" representation saves memory space (as well as CPU cycles) when most of the coefficients in the sequence are zero. o A generic interface allows for a seamless interaction between the dense and the sparse row representation. Most library entities (linear expressions, constraints, generators, congruences, and their systems) can be built using either representation, specified as a constructor's argument. o As a by-product of this sparse/dense refactoring work, efficiency improvements have been obtained even for those computations that are still based on the dense row representation. o Reasonable default values for the row representation are provided for each library entity, automatically leading to significant memory space savings even in old client/library code, e.g., when dealing with constraint systems describing weakly relational abstractions such as boxes and octagonal shapes. o If desired, these default values can be customized to user's needs by changing just a few lines of library code. For instance, the constraint systems stored inside C_Polyhedron and NNC_Polyhedron objects can be made to use the sparse representation by just changing the following line in Polyhedron.defs.hh: static const Representation default_con_sys_repr = DENSE; to become static const Representation default_con_sys_repr = SPARSE; Bugfixes ======== o Fixed a bug affecting methods bool BD_Shape<T>::contains(const BD_Shape& y) const; bool Octagonal_Shape<T>::contains(const Octagonal_Shape& y) const; whereby the wrong result was obtained when *this is an empty weakly-relational shape and y is not empty. o Fixed a bug affecting the PIP solver whereby a wrong result could have been obtained if the input constraint system contained multiple linear equality constraints. -------------------------------------------------------------------------- NEWS for version 0.12.1 (released on April 16, 2012) -------------------------------------------------------------------------- New and Changed Features ======================== o In the C, Java, OCaml and Prolog interfaces, modified the signature of the function/method/predicate for setting the deterministic timeout threshold. The new interfaces take two input values, named `unscaled' and `scale', that are used to compute the threshold value as `unscaled * 2^scale'. o Added new Box<ITV> methods bool has_upper_bound(Variable var, Coefficient& n, Coefficient& d, bool& closed) const; bool has_lower_bound(Variable var, Coefficient& n, Coefficient& d, bool& closed) const; to query a non-empty box for the existence and value of its upper/lower bound on variable `var'. The methods have been also added to all the available language interfaces. o Two BibTeX databases of papers related to the Parma Polyhedra Library have been added to the distribution (in the `doc' directory). Bugfixes ======== o Restored the support for deterministic timeouts in the PIP solver (it was removed by accident in PPL 0.12). o Minor documentation fixes. o Portability improved. -------------------------------------------------------------------------- NEWS for version 0.12 (released on February 27, 2012) -------------------------------------------------------------------------- New and Changed Features ======================== o New configure options `--with-gmp=DIR', `--with-gmp-include=DIR' and `--with-gmp-lib=DIR' supersede the (now removed) option `--with-gmp-prefix'. (The old option never really worked; hopefully this is the last change in this area.) o New configuration option `--disable-documentation'. When specified no new documentation is built: only the documentation already present in the source tree is installed upon `make install'. o The resolution process for PIP_Problem now better exploits the integrality of parameters to simplify the newly generated tautological constraints, the splitting constraints of decision nodes, and the expressions defining artificial parameters. o The implementations of the MIP and PIP solvers are based on a new data structure leading to significant space and time savings when the tableau matrix is sparse; the benchmarks of the ppl_lpsol demo show an improvement on the average case, that grows when the toughest tests in the benchmark suite are considered. o When the `--check' option is used, the input data for demo ppl_lpsol is perturbed the same way as GLPK does, thereby allowing for a meaningful comparison of the results obtained. o The input routine for PPL numeric datatypes has been extended to accept the ISO9899 (C99) hexadecimal floating constant syntax. o The Parma Watchdog Library has been merged into the Parma Polyhedra Library. Bugfixes ======== o Corrected a precision bug in methods Box<ITV>::upper_bound_assign(const Box&) Box<ITV>::upper_bound_assign_if_exact(const Box&) whereby, provided any argument is an empty box and under other rather specific conditions, the computed result was correct but unnecessarily imprecise. o Corrected a bug in method Grid::relation_with(const Constraint&) const whereby, under specific conditions, the method was creating invalid Grid_Generator objects and providing an incorrect result.
1 line
29 B
Text
1 line
29 B
Text
The Parma Polyhedra Library.
|