def sqrt(x):
 np = import_module('numpy')
 if isinstance(x, (int, float)):
  if (x > 0):
   return interval(np.sqrt(x))
  else:
   return interval((- np.inf), np.inf, is_valid=False)
 elif isinstance(x, interval):
  if (x.end < 0):
   return interval((- np.inf), np.inf, is_valid=False)
  elif (x.start < 0):
   return interval((- np.inf), np.inf, is_valid=None)
  else:
   return interval(np.sqrt(x.start), np.sqrt(x.end), is_valid=x.is_valid)
 else:
  raise NotImplementedError

def sqrt ( x ) : np = import_module ( 'numpy' ) if isinstance ( x , ( int , float ) ) : if ( x > 0 ) : return interval ( np . sqrt ( x ) ) else : return interval ( ( - np . inf ) , np . inf , is_valid = False ) elif isinstance ( x , interval ) : if ( x . end < 0 ) : return interval ( ( - np . inf ) , np . inf , is_valid = False ) elif ( x . start < 0 ) : return interval ( ( - np . inf ) , np . inf , is_valid = None ) else : return interval ( np . sqrt ( x . start ) , np . sqrt ( x . end ) , is_valid = x . is_valid ) else : raise NotImplementedError
elementwise square root function .