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

encapsulate anum functionality

This commit is contained in:
Nikolaj Bjorner 2024-01-20 12:59:50 -08:00
parent 548be4c1f9
commit 17545233e6
2 changed files with 26 additions and 19 deletions

View file

@ -204,13 +204,13 @@ namespace algebraic_numbers {
}
void del(numeral & a) {
if (a.m_cell == nullptr)
if (a.is_null())
return;
if (a.is_basic())
del(a.to_basic());
else
del(a.to_algebraic());
a.m_cell = nullptr;
a.clear();
}
void reset(numeral & a) {
@ -218,7 +218,7 @@ namespace algebraic_numbers {
}
bool is_zero(numeral const & a) {
return a.m_cell == nullptr;
return a.is_null();
}
bool is_pos(numeral const & a) {
@ -359,7 +359,7 @@ namespace algebraic_numbers {
}
void swap(numeral & a, numeral & b) noexcept {
std::swap(a.m_cell, b.m_cell);
a.swap(b);
}
basic_cell * mk_basic_cell(mpq & n) {
@ -432,13 +432,13 @@ namespace algebraic_numbers {
}
if (a.is_basic()) {
if (is_zero(a))
a.m_cell = mk_basic_cell(n);
a = mk_basic_cell(n);
else
qm().set(a.to_basic()->m_value, n);
}
else {
del(a);
a.m_cell = mk_basic_cell(n);
a = mk_basic_cell(n);
}
}
@ -492,7 +492,7 @@ namespace algebraic_numbers {
else {
if (a.is_basic()) {
del(a);
a.m_cell = TAG(void*, mk_algebraic_cell(sz, p, lower, upper, minimal), ROOT);
a = mk_algebraic_cell(sz, p, lower, upper, minimal);
}
else {
SASSERT(sz > 2);
@ -526,7 +526,7 @@ namespace algebraic_numbers {
del(a);
void * mem = m_allocator.allocate(sizeof(algebraic_cell));
algebraic_cell * c = new (mem) algebraic_cell();
a.m_cell = TAG(void *, c, ROOT);
a = c;
copy(c, b.to_algebraic());
SASSERT(acell_inv(*c));
}
@ -796,7 +796,7 @@ namespace algebraic_numbers {
scoped_mpq r(qm());
to_mpq(qm(), lower(c), r);
del(c);
a.m_cell = mk_basic_cell(r);
a = mk_basic_cell(r);
return false;
}
}
@ -817,7 +817,7 @@ namespace algebraic_numbers {
scoped_mpq r(qm());
to_mpq(qm(), lower(c), r);
del(c);
a.m_cell = mk_basic_cell(r);
a = mk_basic_cell(r);
return false;
}
SASSERT(acell_inv(*c));