Archive

This is an archive of the bugs discovered for various versions of the PPL.

Known Bugs in PPL 0.12.1

May 23, 2012
Corrected a bug in methods BD_Shape::contains(const BD_Shape& y) and Octagonal_Shape::contains(const Octagonal_Shape& y) whereby the wrong result was obtained when *this is an empty weakly-relational shape and y is not empty. Relevant commit is e27c255a163af8d1ca70494be28ccfb22984b7e9.
May 4, 2012
Corrected a bug affecting the PIP solver whereby a wrong result could have been obtained if the input constraint system contained multiple linear equality constraints. Relevant commit is 5453b06aa9e87a44354171c588e09397393a0bb6.

Known Bugs in PPL 0.11.2

February 14, 2012
Corrected a precision bug in methods Box::upper_bound_assign(const Box&) and Box::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. Relevant commit is 50bf9eb645f7db8db9157788112b41d88cf18f08.
December 3, 2011
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. Relevant commit is b67af6c1ba5a560e2ab48a37cccf8fc18782a257.
October 17, 2011
Fixed a bug that, under quite specific conditions, caused a wrong result to be computed when re-optimizing a 0-dimension MIP problem. Relevant commit is 09144610d98413a390afed2c0f5b189e7a9e5f30.

Known Bugs in PPL 0.11

February 10, 2011
Fixed a bug in the input method for checked integers whereby, under specific conditions, the input stream state bits were not updated. The bug was only affecting builds using checked integer coefficients. Relevant commit is d0f6bd037c90676130e9547e5ed909cf6ba8eee9.
February 5, 2011
Fixed a bug in the OCaml interface, which was affecting functions ppl_Pointset_Powerset_<INSTANCE>_get_disjunct. Relevant commit is c23ded5ce0023a753fdd5da2dbbd99d1a084566c.
February 5, 2011
Corrected a couple of resource (re-)allocation problems that, under specific conditions, could affect the correctness of Grid constructor Grid::Grid(const Box<Interval>& box) and NNC_Polyhedron method Polyhedron::generalized_affine_image(). Relevant commits are a01fecf4cde756aaefe88b8f309f9bdf3e07b670 and bf1edca5e0ddb03674a35218dccce6bc421469e2.
February 4, 2011
Corrected a problem in the simplification of PIP_Problem solution trees whereby, under specific conditions, the node merging process produced decision nodes that did not satisfy their class invariant. Relevant commit is caaa126b56ccb07884217b33b6cc8c1f79e7f6ca.
October 19, 2010
Fixed a precision bug in method Octagonal_Shape<T>::affine_image() whereby in the case of an invertible affine transformation implementing a variable sign symmetry (and optional translation), the computed result was correct but unnecessarily imprecise. Relevant commit is 5c95fc0eab6a38442751ed16c6cfa9d538917f3f.
October 16, 2010
Fixed a bug whereby the argument of all the methods unconstrain(Variable var) was not checked correctly for space dimension compatibility. Relevant commit is ff5b0796773b34ef9d1e26d2a40b4fdb8376dc8f.
September 16, 2010
Corrected an efficiency bug in the C language interface function ppl_Linear_Expression_add_to_coefficient(). Relevant commit is ba9f6c92b49afbbfc37d864f59fff70df90f6536.
September 7, 2010
Fixed a bug affecting constructor Interval::Interval(const char* s) whereby a wrong interval would be constructed if the string argument denotes a number that can only be represented as an infinity. Relevant commit is 3e2fe287b4efd3b58127951793cc00ffe0ca21c0.
August 29, 2010
Fixed a bug affecting the input routine of ppl_lpsol, whereby the inhomogeneous term of the objective function was disregarded. The bug could only affect the optimized value of the objective function, while having no effect onthe problem's optimization state. Relevant commit is c82a27391846139072cadf0754f59f4805f4f99b.
August 13, 2010
Fixed a bug affecting methods Box::CC76_widening_assign(const T&, Iterator, Iterator) and Interval::CC76_widening_assign(const From&, Iterator, Iterator) whereby a lower bound would not be computed correctly when the two iterators specify an empty list of stop points. Relevant commit is 535657baab7b4f5e6d884a7fcdc2138b1ea0797c.

Known Bugs in PPL 0.10.2

January 9, 2010
Modified ppl_lpsol test files ex1.mps and unboundedmin.mps so as to explicitly flag problem variables to be integer ones. This change allows to obtain a stable output for the two tests across different versions of glpk. The problem was caused by a change of behavior, first occurring in glpk-4.38, in the MPS file parsing routines. For more details, see the mailing list threads [Bug-glpk] Variables erroneously read as binary? and [PPL-devel] [Fink-devel] ppl-0.10.2 check thorough test fail. The two relevant commits are 97ce932e012943328164d387cfe9a8d2196ca171 and 56ee86b9ccf001c8dc2ab1558332e9691b2eff3f.
August 15, 2009
Fixed a bug whereby maximize and minimize optimization methods of the class template Pointset_Powerset were returning the Boolean value true (indicating a successful optimization) even when the pointset powerset was empty, thereby contradicting their specification. Relevant commit is b52a2d273f4f96eec4a2ac5bb453756906e52a88.
August 7, 2009
Fixed a bug whereby method NNC_Polyhedron::poly_hull_assign_if_exact(const NNC_Polyhedron&) was sometimes working incorrectly, flagging some inexact hull computations as exact. The bug was only affecting the domain of NNC polyhedra and domains based on it (e.g., finite powersets of NNC polyhedra). Relevant commit is 325ba80abd8c06c5dd740d35064302bbe65e251b.

Known Bugs in PPL 0.10.1

April 16, 2009
Fixed a bug whereby make -n (possibly followed by one or more make targets) was not working as expected. Relevant commits are d5c7c849dc491e2057c5da89b777ab61377df240 and 196f2de7fe79d67450109628d144b9b8f4ec2e3e.
April 15, 2009
Fixed a bug in the Libtool version information for the C language interface library, which caused the libppl_c library to be installed with a wrong soname (18ff016b92d1564dc761a0a1dcc528d8c2c4915b).
April 15, 2009
Modified the configuration script so as to correctly detect version 4.3.0 of GMP (5596eca02f2dea09e57ea22a240c2f3eab8be9e5). Note: strictly speaking, this is not a PPL bug, since GMP 4.3.0 (released a few hours after the release of PPL 0.10.1) includes a backward-incompatible change to variable gmp_version.

Known Bugs in PPL 0.10

March 26, 2009
Fixed several bugs in the OCaml interface code that were reported by Kenneth MacKenzie (thanks!). Corrections include:
March 24, 2009
Found a bug affecting the method Octagonal_Shape<T>::affine_image(var, expr) whereby a wrong result can be computed, under specific conditions, if expr has the form var + n. The bug has been corrected in the git master branch (d81e9642493f53fa6456d19e4ba3107bcfdf42a8).
March 22, 2009
Found a bug affecting the Java, OCaml and Prolog language interfaces whereby the method/function/predicate for dropping a disjunct from a Pointset_Powerset object were returning an invalid iterator. The bug has been corrected in the git master branch (6a6734db48e2ca605dfc27ce5f1a923eb867ed25).
February 3, 2009
Found a bug affecting PPL 0.10 and the CVS head version on all big-endian architectures. The bug has already been corrected (though not yet in an optimal way) in the CVS head version. A patch for PPL 0.10 is also available. If for some reason you cannot patch the sources, another workaround is to configure the library, on big-endian architectures only, specifying
    CPPFLAGS="-UWORDS_BIGENDIAN -DPPL_WORDS_BIGENDIAN=1"
at the end of the configure command, and then use these flags to compile C++ application code that includes ppl.hh (no further precaution is needed for applications using any other interface).
February 2, 2009
Found a bug affecting method Polyhedron::simplify_using_context_assign and methods for adding generators to a polyhedron whereby, under rather specific condition, an assertion fails when working with empty polyhedra in a zero-dimension vector space. The bug has already been corrected in the CVS head version.
November 24, 2008
Found a bug in a private method that affects the public methods Grid::bounds_from_above(), Grid::bounds_from_below(), Grid::bounds_from_maximize(), Grid::bounds_from_minimize() causing all of them to wrongly return true in certain cases where the grid generators were up-to-date but not minimized. The bug has already been corrected in the CVS head version.
November 20, 2008
Found a bug in method Partially_Reduced_Product<D1, D2, R>::time_elapse_assign(y) whereby, if the product y was not already reduced, the operation could lose precision. The bug has already been corrected in the CVS head version. A simple workaround is also available: it is sufficient to perform any check such as emptiness just before calling the method.

Found a bug in the OCaml interface code for functions ppl_Grid_generalized_affine_image_with_congruence and ppl_Grid_generalized_affine_preimage_with_congruence. The bug has already been corrected in the CVS head version.

November 18, 2008
Found a bug in method Polyhedron::contains_integer_point() whereby, under very specific conditions, an empty polyhedron is incorrectly said to contain an integer point. The bug has already been corrected in the CVS head version. A simple workaround is also available: it is sufficient to perform an emptiness check just before calling the method above.

Known Bugs in PPL 0.9

December 3, 2007
Found a bug in an internal method handling the insertion of a constraint or generator in the corresponding system. The bug only occurs under very specific conditions: in particular, when a not necessarily closed constraint/generator is inserted in an empty system having a higher space dimension. The bug has already been corrected in the CVS head version.
October 10, 2007
Found a bug in methods Grid::constraints() and Grid::minimized_constraints() that caused an internal assertion to fail when the grid had space dimension 0. The bug, which can only be observed if the library is configured with assertions checking enabled, has already been corrected in the CVS head version.
September 30, 2007
Found bugs that prevent building the library on systems not supported by the Parma Watchdog Library or when the library is configured by using the --disable-watchdog option. The bugs have already been corrected in the CVS head version.

Known Bugs in PPL 0.8

February 27, 2006
Found a bug in an internal method that, under some circumstances, could cause a computation on polyhedra to yield a wrong result. The bug has already been corrected in the CVS head version.
January 27, 2006
Found a bug in the SICStus Prolog interface whereby the library could not be built on x86_64 architectures. The bug has already been corrected in the CVS head version.

Known Bugs in PPL 0.7

October 04, 2005
Found a bug in method void Polyhedra_Powerset<PH>::concatenate_assign(const Polyhedra_Powerset& y) that could result in the generation of invalid powersets. The bug has already been corrected in the CVS head version.
July 04, 2005
Found a bug in methods void Polyhedron::generalized_affine_image that could manifest as an assertion violation when the polyhedron was represented by an inconsistent constraint system. The bug has already been corrected in the CVS head version.
February 11, 2005
Found a bug that could manifest itself when the constraint system of some polyhedron is copied and then new constraints are inserted into the copy. The bug has already been corrected in the CVS head version.
January 13, 2005
Found a bug whereby the occurrence of an `out of memory' error during the allocation of a row of integer coefficients could have resulted in a memory leak. The bug has already been corrected in the CVS head version.
January 10, 2005
Found a bug in the specialized constructors Polyhedra_Powerset<NNC_Polyhedron>(const Polyhedra_Powerset<C_Polyhedron>&) and Polyhedra_Powerset<C_Polyhedron>(const Polyhedra_Powerset<C_Polyhedron>&) whereby the newly built Polyhedra_Powerset object could have been flagged as non-redundant even though it was containing redundant disjuncts. Found a similar bug in generic constructor Polyhedra_Powerset(const Constraint_System& cs) that manifests when cs is denoting an empty polyhedron. The bugs have already been corrected in the CVS head version.

Known Bugs in PPL 0.6.1

September 8, 2004
Found (thanks to Sriram Sankaranarayanan) a bug in a private method of class GenSys that was affecting the widening method void Polyhedron::H79_widening_assign(const Polyhedron& y, unsigned* tp = 0) as well as all the limited and bounded extrapolation methods for polyhedra. The bug has already been corrected in the CVS head version. A patch for PPL 0.6.1 is also available.
September 15, 2004
Corrected a bug that was affecting the methods bool Polyhedra_PowerSet::geometrically_covers(const Polyhedra_PowerSet&) const and bool Polyhedra_PowerSet::geometrically_equals(const Polyhedra_PowerSet&) const. The bug has already been corrected in the CVS head version. A patch for PPL 0.6.1 is also available.
November 6, 2004
Fixed a bug in template <typename Partial_Function> void Polyhedron::map_space_dimensions(const Partial_Function& pfunc) that could manifest itself when used with a partial function encoding permutation. The bug has already been corrected in the CVS head version.
November 8, 2004
Corrected a bug that was affecting method bool Polyhedron::is_universe() const. The bug has already been corrected in the CVS head version.

Known Bugs in PPL 0.5

August 20, 2003
Found (thanks to Axel Simon) a bug in the C interface function int ppl_Polyhedron_map_dimensions(ppl_Polyhedron_t ph, ppl_dimension_type maps[], size_t n) whereby ph was assigned a wrong result. The bug has already been corrected in the CVS head version. A patch for PPL 0.5 is also available.

Known Bugs in PPL 0.4.2

October 24, 2002
Found a bug in function LinExpression& operator-=(LinExpression&, const LinExpression&) whereby a wrong result was produced under some circumstances. The bug has already been corrected in the CVS head version. A patch for PPL 0.4.2 is also available.
December 5, 2002
Found a bug in method Polyhedron::minimized_constraints() that, under some circumstances, could cause a wrong result or a program crash. The bug has already been corrected in the CVS head version.

Known Bugs in PPL 0.4.1

October 2, 2002
Found a bug in methods const ConSys& Polyhedron::minimized_constraints() const and const GenSys& Polyhedron::minimized_generators() const whereby a library invariant was violated when *this was the zero-dimension space universe NNC polyhedron. The bug has already been corrected in the CVS head version.
September 27, 2002
Found a bug in method Polyhedron::affine_image(const Variable& v, const LinExpression& expr, const Integer& d) whereby a wrong result was obtained when `d' was a negative Integer. The same bug was also affecting method Polyhedron::affine_preimage(). The bug has already been corrected in the CVS head version.
September 23, 2002
Found a bug in a private method used to implement the public method Poly_Gen_Relation Polyhedron::relation_with(const Generator& g) const whereby a wrong result was obtained when `g' was a line. The bug has already been corrected in the CVS head version.
September 10, 2002
Found a bug in method bool Polyhedron::operator<=(const Polyhedron&) const whereby the lines of the polyhedron were handled improperly. The bug has already been corrected in the CVS head version.
August 12, 2002
Found a bug in method Polyhedron::add_generator(const Generator&) whereby we were not adding the corresponding closure point when adding a point to an empty NNC polyhedron. The bug has already been corrected in the CVS head version.
August 12, 2002
Found a bug in method GenSys::insert(const Generator&) whereby the insertion of a generator into an empty generator system might be mishandled. The bug has already been corrected in the CVS head version.

Known Bugs in PPL 0.4

July 10, 2002
Found a bug in method Polyhedron::poly_difference_assign(const Polyhedron& y) whereby a wrong result may be obtained when the constraint system defining polyhedron y contains some equality constraints. The bug has been fixed in PPL 0.4.1.
July 10, 2002
Found a bug in method Polyhedron& Polyhedron::operator=(const Polyhedron& y) whereby one of the implementation invariants is not enforced after the assignment of an empty polyhedron to a Polyhedron object. This bug should not affect common computations: it is only visible when the library has been built with the configuration option --enable-assertions, which causes the automatic invocation of the method bool Polyhedron::OK(bool check_not_empty = false) const (or, by explicitly invoking this invariant checking method in the appropriate context). The bug has been fixed in PPL 0.4.1.