3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

test / fix wrap-around for mod-interval

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-07-03 10:49:22 -07:00
parent 1355ea432a
commit ff717a9db1
5 changed files with 120 additions and 51 deletions

View file

@ -30,6 +30,69 @@ static void test_interval2() {
SASSERT(i.is_empty());
i = mod_interval<uint32_t>(500, 10);
std::cout << "test-wrap: " << i << "\n";
std::cout << " >= 0: " << i.intersect_uge(0) << "\n";
std::cout << " >= 2: " << i.intersect_uge(2) << "\n";
std::cout << " >= 11: " << i.intersect_uge(11) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " >= 10: " << i << " -> " << i.intersect_uge(10) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " >= 499: " << i << " -> " << i.intersect_uge(499) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " >= 500: " << i << " -> " << i.intersect_uge(500) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " >= 501: " << i << " -> " << i.intersect_uge(501) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " > 0: " << i.intersect_ugt(0) << "\n";
std::cout << " > 2: " << i.intersect_ugt(2) << "\n";
std::cout << " > 10: " << i.intersect_ugt(10) << "\n";
std::cout << " > 11: " << i.intersect_ugt(11) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " > 10: " << i << " -> " << i.intersect_ugt(10) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " > 499: " << i << " -> " << i.intersect_ugt(499) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " > 500: " << i << " -> " << i.intersect_ugt(500) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " > 501: " << i << " -> " << i.intersect_ugt(501) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 0: " << i.intersect_ule(0) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 2: " << i.intersect_ule(2) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 9: " << i.intersect_ule(9) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 10: " << i.intersect_ule(10) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 11: " << i.intersect_ule(11) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 499: " << i << " -> " << i.intersect_ule(499) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 500: " << i << " -> " << i.intersect_ule(500) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " <= 501: " << i << " -> " << i.intersect_ule(501) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 0: " << i.intersect_ult(0) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 2: " << i.intersect_ult(2) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 9: " << i.intersect_ult(9) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 10: " << i.intersect_ult(10) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 11: " << i.intersect_ult(11) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 499: " << i << " -> " << i.intersect_ult(499) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 500: " << i << " -> " << i.intersect_ult(500) << "\n";
i = mod_interval<uint32_t>(500, 10);
std::cout << " < 501: " << i << " -> " << i.intersect_ult(501) << "\n";
}
void tst_mod_interval() {