
Dear PPL developer,
I am currently using the PPL to do some formal verification on Time Petri Nets. You might be interested in knowing that the next release of Romeo (http://romeo.rts-software.org/) should rely on it for all its "hybrid" computations.
Anyway, I have a strange "positive overflow" with the code below. The complete error message reads: $ ./test_ppl terminate called after throwing an instance of 'std::overflow_error' what(): Positive overflow. Abort trap
Info that should be useful: - I run this code on an Apple MacBook Pro with an Intel Core 2 Duo processor - I compiled the PPL seamlessly with options --enabled- optimization=speed and --enable-coefficients=checked-int32 - g++ --version reads: i686-apple-darwin8-g++-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
My sample code : #include <iostream> using namespace std;
#include <ppl.hh> using namespace PPL; using namespace PPL::IO_Operators;
int main() { NNC_Polyhedron P(2); Variable A(0); Variable B(1);
P.add_constraint(B == 46342); P.add_constraint(A >= 0); P.add_constraint(A <= 1);
Linear_Expression expr = B - A; P.affine_image(B, expr);
cout << P << endl;
return 0; }
I compile it with g++ -o test_ppl test_ppl.cc -lppl -lgmp and get the above exception when executing it.
Now, if I compile the PPL with --enable-coefficients=native-int32, it just runs fine and gives the intended result: A + B = 46342, -A >= -1
Also it runs fine with checked ints and B being below or equal to 46341.
I hope it is not just a misuse from me... Please ask if you need some more information.
Best wishes,
Didier
-- Dr. Didier Lime Maître de Conférences IRCCyN / École Centrale de Nantes Nantes, France