class_docstr: Ceiling is a univariate function which returns the smallest integer
  value not less than its argument. This implementation
  generalizes ceiling to complex numbers by taking the ceiling of the
  real and imaginary parts separately.
  
  Examples
  ========
  
  >>> from sympy import ceiling, E, I, S, Float, Rational
  >>> ceiling(17)
  17
  >>> ceiling(Rational(23, 10))
  3
  >>> ceiling(2*E)
  6
  >>> ceiling(-Float(0.567))
  0
  >>> ceiling(I/2)
  I
  >>> ceiling(S(5)/2 + 5*I/2)
  3 + 3*I
  
  See Also
  ========
  
  sympy.functions.elementary.integers.floor
  
  References
  ==========
  
  .. [1] "Concrete mathematics" by Graham, pp. 87
  .. [2] https://mathworld.wolfram.com/CeilingFunction.html
class_docstr_tok: ["Ceiling","is","a","univariate","function","which","returns","the","smallest","integer","value","not","less","than","its","argument",".","This","implementation","generalizes","ceiling","to","complex","numbers","by","taking","the","ceiling","of","the","real","and","imaginary","parts","separately",".","Examples","========",">",">",">","from","sympy","import","ceiling",",","E",",","I",",","S",",","Float",",","Rational",">",">",">","ceiling","(","17",")","17",">",">",">","ceiling","(","Rational","(","23",",","10",")",")","3",">",">",">","ceiling","(","2","*","E",")","6",">",">",">","ceiling","(","-Float","(","0.567",")",")","0",">",">",">","ceiling","(","I\/2",")","I",">",">",">","ceiling","(","S","(","5",")","\/2","+","5","*","I\/2",")","3","+","3","*","I","See","Also","========","sympy.functions.elementary.integers.floor","References","==========","..","[","1","]","``","Concrete","mathematics","''","by","Graham",",","pp",".","87","..","[","2","]","https",":","\/\/mathworld.wolfram.com\/CeilingFunction.html"]
code: def _eval_number(cls, arg):
      if arg.is_Number:
          return arg.ceiling()
      elif any(
          isinstance(i, j)
          for i in (arg, -arg)
          for j in (floor, ceiling)
      ):
          return arg
      if arg.is_NumberSymbol:
          return arg.approximation_interval(Integer)[1]
  
imports: from typing import Tuple
  from sympy.core.basic import Basic
  from sympy.core.expr import Expr
  from sympy.core import Add, S
  from sympy.core.evalf import get_integer_part, PrecisionExhausted
  from sympy.core.function import Function
  from sympy.core.logic import fuzzy_or
  from sympy.core.numbers import Integer, int_valued
  from sympy.core.relational import Gt, Lt, Ge, Le, Relational, is_eq
  from sympy.core.sympify import _sympify
  from sympy.functions.elementary.complexes import im, re
  from sympy.multipledispatch import dispatch
label_desc: Use image node_id 1 for calling the ceiling obj's underlying member method code with example usage: obj._eval_number(cls, arg) and returns: arg, arg, arg