mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
reserve for multiplication
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
a0ae5c8d5e
commit
6b0a10637c
2 changed files with 5 additions and 3 deletions
|
@ -352,13 +352,13 @@ namespace bv {
|
|||
break;
|
||||
}
|
||||
case OP_BMUL: {
|
||||
SASSERT(e->get_num_args() > 1);
|
||||
auto const& a = wval(e->get_arg(0));
|
||||
auto const& b = wval(e->get_arg(1));
|
||||
for (unsigned i = 0; i < a.nw; ++i)
|
||||
val.set_mul(val.eval, a.bits(), b.bits());
|
||||
val.set_mul(val.eval, a.bits(), b.bits(), false);
|
||||
for (unsigned j = 2; j < e->get_num_args(); ++j) {
|
||||
auto const& c = wval(e->get_arg(j));
|
||||
val.set_mul(val.eval, val.eval, c.bits());
|
||||
val.set_mul(val.eval, val.eval, c.bits(), false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -705,6 +705,8 @@ namespace bv {
|
|||
}
|
||||
|
||||
bool sls_valuation::set_mul(bvect& out, bvect const& a, bvect const& b, bool check_overflow) const {
|
||||
out.reserve(2 * nw);
|
||||
SASSERT(out.size() >= 2 * nw);
|
||||
mpn_manager().mul(a.data(), nw, b.data(), nw, out.data());
|
||||
bool ovfl = false;
|
||||
if (check_overflow) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue