3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-25 10:05:32 +00:00

don't use mp[zq] synchronized mode if OpenMP mode is disabled

This commit is contained in:
Nuno Lopes 2018-07-14 20:44:35 +01:00
parent 7d20fbb280
commit b88596283f
10 changed files with 97 additions and 41 deletions

View file

@ -41,12 +41,12 @@ inline void swap(mpq & m1, mpq & m2) { m1.swap(m2); }
template<bool SYNCH = true>
class mpq_manager : public mpz_manager<SYNCH> {
mpz m_n_tmp;
mpz m_add_tmp1;
mpz m_add_tmp2;
mpq m_addmul_tmp;
mpq m_lt_tmp1;
mpq m_lt_tmp2;
mpz m_tmp1;
mpz m_tmp2;
mpz m_tmp3;
mpz m_tmp4;
mpq m_q_tmp1;
mpq m_q_tmp2;
void reset_denominator(mpq & a) {
del(a.m_den);
@ -66,11 +66,11 @@ class mpq_manager : public mpz_manager<SYNCH> {
del(tmp);
}
else {
gcd(a.m_num, a.m_den, m_n_tmp);
if (is_one(m_n_tmp))
gcd(a.m_num, a.m_den, m_tmp1);
if (is_one(m_tmp1))
return;
div(a.m_num, m_n_tmp, a.m_num);
div(a.m_den, m_n_tmp, a.m_den);
div(a.m_num, m_tmp1, a.m_num);
div(a.m_den, m_tmp1, a.m_den);
}
}
@ -87,9 +87,9 @@ class mpq_manager : public mpz_manager<SYNCH> {
del(tmp1);
}
else {
mul(b, a.m_den, m_add_tmp1);
mul(b, a.m_den, m_tmp1);
set(c.m_den, a.m_den);
add(a.m_num, m_add_tmp1, c.m_num);
add(a.m_num, m_tmp1, c.m_num);
normalize(c);
}
STRACE("rat_mpq", tout << to_string(c) << "\n";);
@ -320,8 +320,8 @@ public:
del(tmp);
}
else {
mul(b,c,m_addmul_tmp);
add(a, m_addmul_tmp, d);
mul(b, c, m_q_tmp1);
add(a, m_q_tmp1, d);
}
}
}
@ -342,8 +342,8 @@ public:
del(tmp);
}
else {
mul(b,c,m_addmul_tmp);
add(a, m_addmul_tmp, d);
mul(b,c, m_q_tmp1);
add(a, m_q_tmp1, d);
}
}
}
@ -365,8 +365,8 @@ public:
del(tmp);
}
else {
mul(b,c,m_addmul_tmp);
sub(a, m_addmul_tmp, d);
mul(b,c, m_q_tmp1);
sub(a, m_q_tmp1, d);
}
}
}
@ -387,8 +387,8 @@ public:
del(tmp);
}
else {
mul(b,c,m_addmul_tmp);
sub(a, m_addmul_tmp, d);
mul(b,c, m_q_tmp1);
sub(a, m_q_tmp1, d);
}
}
}
@ -816,7 +816,11 @@ public:
bool is_even(mpq const & a) { return is_int(a) && is_even(a.m_num); }
};
#ifndef _NO_OMP_
typedef mpq_manager<true> synch_mpq_manager;
#else
typedef mpq_manager<false> synch_mpq_manager;
#endif
typedef mpq_manager<false> unsynch_mpq_manager;
typedef _scoped_numeral<unsynch_mpq_manager> scoped_mpq;