mirror of
https://github.com/Z3Prover/z3
synced 2025-08-06 11:20:26 +00:00
val_pp
This commit is contained in:
parent
28fb67219e
commit
85818612fb
2 changed files with 11 additions and 9 deletions
|
@ -1719,14 +1719,14 @@ namespace dd {
|
||||||
unsigned pow;
|
unsigned pow;
|
||||||
if (val.is_power_of_two(pow) && pow > 10)
|
if (val.is_power_of_two(pow) && pow > 10)
|
||||||
return out << "2^" << pow;
|
return out << "2^" << pow;
|
||||||
else if (val < m.max_value() && (val + 1).is_power_of_two(pow) && pow > 10) {
|
for (int offset : {-1, 1})
|
||||||
if (require_parens)
|
if (val < m.max_value() && (val - offset).is_power_of_two(pow) && pow > 10)
|
||||||
out << "(";
|
return out << lparen() << "2^" << pow << (offset >= 0 ? "+" : "") << offset << rparen();
|
||||||
out << "2^" << pow << "-1";
|
rational neg_val = mod(-val, m.two_to_N());
|
||||||
if (require_parens)
|
if (neg_val < val) { // keep this condition so we don't suddenly print negative values where we wouldn't otherwise
|
||||||
out << ")";
|
if (neg_val.is_power_of_two(pow) && pow > 10)
|
||||||
return out;
|
return out << "-2^" << pow;
|
||||||
} else
|
}
|
||||||
return out << m.normalize(val);
|
return out << m.normalize(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -556,6 +556,8 @@ namespace dd {
|
||||||
pdd_manager const& m;
|
pdd_manager const& m;
|
||||||
rational const& val;
|
rational const& val;
|
||||||
bool require_parens;
|
bool require_parens;
|
||||||
|
char const* lparen() const { return require_parens ? "(" : ""; }
|
||||||
|
char const* rparen() const { return require_parens ? ")" : ""; }
|
||||||
public:
|
public:
|
||||||
val_pp(pdd_manager const& m, rational const& val, bool require_parens): m(m), val(val), require_parens(require_parens) {}
|
val_pp(pdd_manager const& m, rational const& val, bool require_parens): m(m), val(val), require_parens(require_parens) {}
|
||||||
std::ostream& display(std::ostream& out) const;
|
std::ostream& display(std::ostream& out) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue