ibex-team / ibex-lib

IBEX is a C++ library for constraint processing over real numbers.
http://ibex-team.github.io/ibex-lib/
GNU Lesser General Public License v3.0
67 stars 51 forks source link

Operations on sets loaded from files return invalid vector operation errors #514

Open eparrott opened 3 years ago

eparrott commented 3 years ago

Hi,

I've been using a method suggested in a previous issue I'd posted for generating sets from a vector of 5D interval vectors (starting from an empty set and using the |= operator iteratively on each consectutive box), but because of the size and number of sets generated I've had to save them to files in order to not overrun my computer's memory capacity and then load them in another script to post process them. This process for generation and saving of sets seems to be mostly working fine, however, when I then attempt to load the sets from these files and do some post processing on them in a seperate, any operations I attempt using ibex's standard |= and &= operators return an invalid vector operation error.

For instance:

Set first_set("first_set_file");
Set second_set("second_set_file");

first_set &= second_set;

Will return: terminate called after throwing an instance of 'ibex::InvalidIntervalVectorOp' what(): no message Aborted (core dumped)

I suspect this has something to do with the size or dimensionality of the sets, as tests I've done with smaller 2D sets using the same methods have worked perfectly fine. My other theory is that it has something to to with the method of set creation, as for a set generated by iteratively taking the union of 150 5D inside boxes (status set to YES), when it is saved and loaded by another script the lines:

Set first_set("first_set_file");
std::cout << first_set << std::endl;

will result in approximately 10 minutes of continuous output to the terminal, yielding thousands and thousands of boxes with spacing in the file which doesn't match the typical output for this command. There also seems to be far more boxes present in the set than what should be required to describe the set. Any input as to why this might be happening or how I might rectify it would be greatly appreciated.