parameters: (self, precision=10)
docstring: Return a upper bound that approximates the numeral `self`.
          The result `r` is such that r - self <= 1/10^precision
  
          If `self` is rational, then the result is `self`.
  
          >>> x = Numeral(2).root(2)
          >>> x.upper(20)
          6838717160008073720548335/4835703278458516698824704
          >>> x.upper(5)
          2965821/2097152
          >>> Numeral(2).upper(10)
          2
docstring_summary: Return a upper bound that approximates the numeral `self`.
          The result `r` is such that r - self <= 1/10^precision
docstring_tokens: Return a upper bound that approximates the numeral self . The result r is such that r - self < = 1 / 10^precision
function: def upper(self, precision=10):
          """Return a upper bound that approximates the numeral `self`.
          The result `r` is such that r - self <= 1/10^precision
  
          If `self` is rational, then the result is `self`.
  
          >>> x = Numeral(2).root(2)
          >>> x.upper(20)
          6838717160008073720548335/4835703278458516698824704
          >>> x.upper(5)
          2965821/2097152
          >>> Numeral(2).upper(10)
          2
          """
          if self.is_rational():
              return self
          else:
              return Numeral(Z3_get_algebraic_number_upper(self.ctx_ref(), self.as_ast(), precision), self.ctx)
function_tokens: def upper ( self , precision = 10 ) : if self . is_rational ( ) : return self else : return Numeral ( Z3_get_algebraic_number_upper ( self . ctx_ref ( ) , self . as_ast ( ) , precision ) , self . ctx )