mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Improve html pretty printer for RCF package
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
		
							parent
							
								
									77f58269ed
								
							
						
					
					
						commit
						4624919786
					
				
					 8 changed files with 17 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -51,7 +51,6 @@ def MkRoots(p, ctx=None):
 | 
			
		|||
    return r
 | 
			
		||||
 | 
			
		||||
class RCFNum:
 | 
			
		||||
    html = False
 | 
			
		||||
    def __init__(self, num, ctx=None):
 | 
			
		||||
        # TODO: add support for converting AST numeral values into RCFNum
 | 
			
		||||
        if isinstance(num, RCFNumObj):
 | 
			
		||||
| 
						 | 
				
			
			@ -68,10 +67,10 @@ class RCFNum:
 | 
			
		|||
        return self.ctx.ref()
 | 
			
		||||
                  
 | 
			
		||||
    def __repr__(self):
 | 
			
		||||
        return Z3_rcf_num_to_string(self.ctx_ref(), self.num, False, RCFNum.html)
 | 
			
		||||
        return Z3_rcf_num_to_string(self.ctx_ref(), self.num, False, in_html_mode())
 | 
			
		||||
 | 
			
		||||
    def compact_str(self):
 | 
			
		||||
        return Z3_rcf_num_to_string(self.ctx_ref(), self.num, True, RCFNum.html)
 | 
			
		||||
        return Z3_rcf_num_to_string(self.ctx_ref(), self.num, True, in_html_mode())
 | 
			
		||||
 | 
			
		||||
    def __add__(self, other):
 | 
			
		||||
        v = _to_rcfnum(other, self.ctx)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1300,7 +1300,7 @@ namespace realclosure {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        void mk_infinitesimal(numeral & r) {
 | 
			
		||||
            mk_infinitesimal(symbol(next_infinitesimal_idx()), symbol(next_infinitesimal_idx()), r);
 | 
			
		||||
            mk_infinitesimal(symbol(next_infinitesimal_idx()+1), symbol(next_infinitesimal_idx()+1), r);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void refine_transcendental_interval(transcendental * t) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1352,7 +1352,7 @@ namespace realclosure {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        void mk_transcendental(mk_interval & proc, numeral & r) {
 | 
			
		||||
            mk_transcendental(symbol(next_transcendental_idx()), symbol(next_transcendental_idx()), proc, r);
 | 
			
		||||
            mk_transcendental(symbol(next_transcendental_idx()+1), symbol(next_transcendental_idx()+1), proc, r);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void mk_pi(numeral & r) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -339,7 +339,7 @@ void display_pp(std::ostream & out,
 | 
			
		|||
                ext_numeral_kind ak) {
 | 
			
		||||
    switch (ak) {
 | 
			
		||||
    case EN_MINUS_INFINITY: out << "-∞"; break;
 | 
			
		||||
    case EN_NUMERAL: m.display(out, a); break;
 | 
			
		||||
    case EN_NUMERAL: m.display_pp(out, a); break;
 | 
			
		||||
    case EN_PLUS_INFINITY: out << "+∞"; break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -399,6 +399,14 @@ void mpbq_manager::display(std::ostream & out, mpbq const & a) {
 | 
			
		|||
        out << "^" << a.m_k;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void mpbq_manager::display_pp(std::ostream & out, mpbq const & a) {
 | 
			
		||||
    out << m_manager.to_string(a.m_num);
 | 
			
		||||
    if (a.m_k > 0)
 | 
			
		||||
        out << "/2";
 | 
			
		||||
    if (a.m_k > 1)
 | 
			
		||||
        out << "<sup>" << a.m_k << "</sup>";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void mpbq_manager::display_smt2(std::ostream & out, mpbq const & a, bool decimal) {
 | 
			
		||||
    if (a.m_k == 0) {
 | 
			
		||||
        m_manager.display_smt2(out, a.m_num, decimal);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -260,6 +260,7 @@ public:
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
    void display(std::ostream & out, mpbq const & a);
 | 
			
		||||
    void display_pp(std::ostream & out, mpbq const & a);
 | 
			
		||||
    void display_decimal(std::ostream & out, mpbq const & a, unsigned prec = 8);
 | 
			
		||||
    /**
 | 
			
		||||
       \brief Display a in decimal while its digits match b digits.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -464,6 +464,7 @@ public:
 | 
			
		|||
 | 
			
		||||
    void display_raw(std::ostream & out, mpff const & n) const;
 | 
			
		||||
    void display(std::ostream & out, mpff const & n) const;
 | 
			
		||||
    void display_pp(std::ostream & out, mpff const & n) const { display(out, n); }
 | 
			
		||||
    void display_decimal(std::ostream & out, mpff const & n, unsigned prec=32, unsigned max_power=128) const;
 | 
			
		||||
    void display_smt2(std::ostream & out, mpff const & n, bool decimal=true) const;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -382,6 +382,7 @@ public:
 | 
			
		|||
    unsigned prev_power_of_two(mpfx const & a);
 | 
			
		||||
 | 
			
		||||
    void display(std::ostream & out, mpfx const & n) const;
 | 
			
		||||
    void display_pp(std::ostream & out, mpfx const & n) const { display(out, n); }
 | 
			
		||||
    void display_smt2(std::ostream & out, mpfx const & n) const;
 | 
			
		||||
    void display_decimal(std::ostream & out, mpfx const & n, unsigned prec = UINT_MAX) const;
 | 
			
		||||
    void display_raw(std::ostream & out, mpfx const & n) const;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -259,6 +259,7 @@ public:
 | 
			
		|||
    void display(std::ostream & out, mpz const & a) const { return mpz_manager<SYNCH>::display(out, a); }
 | 
			
		||||
 | 
			
		||||
    void display(std::ostream & out, mpq const & a) const;
 | 
			
		||||
    void display_pp(std::ostream & out, mpq const & a) const { display(out, a); }
 | 
			
		||||
 | 
			
		||||
    void display_smt2(std::ostream & out, mpz const & a, bool decimal) const { return mpz_manager<SYNCH>::display_smt2(out, a, decimal); }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue