mirror of
https://github.com/Z3Prover/z3
synced 2025-10-03 14:33:56 +00:00
put back shortcut for square test. Remove assumption in unit test
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
8158a500d4
commit
84bf34266b
2 changed files with 25 additions and 27 deletions
|
@ -312,37 +312,37 @@ static void tst7() {
|
|||
|
||||
static void tst8() {
|
||||
rational r;
|
||||
ENSURE(!rational(-4).is_int_perfect_square(r) && r.is_zero());
|
||||
ENSURE(!rational(-3).is_int_perfect_square(r) && r.is_zero());
|
||||
ENSURE(!rational(-2).is_int_perfect_square(r) && r.is_zero());
|
||||
ENSURE(!rational(-1).is_int_perfect_square(r) && r.is_zero());
|
||||
ENSURE(!rational(-4).is_int_perfect_square(r));
|
||||
ENSURE(!rational(-3).is_int_perfect_square(r));
|
||||
ENSURE(!rational(-2).is_int_perfect_square(r));
|
||||
ENSURE(!rational(-1).is_int_perfect_square(r));
|
||||
ENSURE(rational(0).is_int_perfect_square(r) && r.is_zero());
|
||||
ENSURE(rational(1).is_int_perfect_square(r) && r.is_one());
|
||||
ENSURE(!rational(2).is_int_perfect_square(r) && r == rational(2));
|
||||
ENSURE(!rational(3).is_int_perfect_square(r) && r == rational(2));
|
||||
ENSURE(!rational(2).is_int_perfect_square(r));
|
||||
ENSURE(!rational(3).is_int_perfect_square(r));
|
||||
ENSURE(rational(4).is_int_perfect_square(r) && r == rational(2));
|
||||
ENSURE(!rational(5).is_int_perfect_square(r) && r == rational(3));
|
||||
ENSURE(!rational(6).is_int_perfect_square(r) && r == rational(3));
|
||||
ENSURE(!rational(7).is_int_perfect_square(r) && r == rational(3));
|
||||
ENSURE(!rational(8).is_int_perfect_square(r) && r == rational(3));
|
||||
ENSURE(!rational(5).is_int_perfect_square(r));
|
||||
ENSURE(!rational(6).is_int_perfect_square(r));
|
||||
ENSURE(!rational(7).is_int_perfect_square(r));
|
||||
ENSURE(!rational(8).is_int_perfect_square(r));
|
||||
ENSURE(rational(9).is_int_perfect_square(r) && r == rational(3));
|
||||
ENSURE(!rational(10).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(11).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(12).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(13).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(14).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(15).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(10).is_int_perfect_square(r));
|
||||
ENSURE(!rational(11).is_int_perfect_square(r));
|
||||
ENSURE(!rational(12).is_int_perfect_square(r));
|
||||
ENSURE(!rational(13).is_int_perfect_square(r));
|
||||
ENSURE(!rational(14).is_int_perfect_square(r));
|
||||
ENSURE(!rational(15).is_int_perfect_square(r));
|
||||
ENSURE(rational(16).is_int_perfect_square(r) && r == rational(4));
|
||||
ENSURE(!rational(17).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(18).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(19).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(20).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(21).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(22).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(23).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(24).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(17).is_int_perfect_square(r));
|
||||
ENSURE(!rational(18).is_int_perfect_square(r));
|
||||
ENSURE(!rational(19).is_int_perfect_square(r));
|
||||
ENSURE(!rational(20).is_int_perfect_square(r));
|
||||
ENSURE(!rational(21).is_int_perfect_square(r));
|
||||
ENSURE(!rational(22).is_int_perfect_square(r));
|
||||
ENSURE(!rational(23).is_int_perfect_square(r));
|
||||
ENSURE(!rational(24).is_int_perfect_square(r));
|
||||
ENSURE(rational(25).is_int_perfect_square(r) && r == rational(5));
|
||||
ENSURE(!rational(26).is_int_perfect_square(r) && r == rational(6));
|
||||
ENSURE(!rational(26).is_int_perfect_square(r));
|
||||
ENSURE(rational(36).is_int_perfect_square(r) && r == rational(6));
|
||||
|
||||
ENSURE(rational(1,9).is_perfect_square(r) && r == rational(1,3));
|
||||
|
|
|
@ -2320,13 +2320,11 @@ bool mpz_manager<SYNCH>::is_perfect_square(mpz const & a, mpz & root) {
|
|||
set(root, 1);
|
||||
return true;
|
||||
}
|
||||
#if 0
|
||||
// current contract is that root is set to an approximation within +1/-1 of actional root.
|
||||
// x^2 mod 16 in { 9, 1, 4, 0 }
|
||||
auto mod16 = get_least_significant(a) & 0xF;
|
||||
if (mod16 != 0 && mod16 != 1 && mod16 != 4 && mod16 != 9)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
mpz lo, hi, mid, sq_lo, sq_mid;
|
||||
set(lo, 1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue