class_docstr: Simplify expressions based on range analysis
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  
  >>> node = ast.parse("def any():\n for x in builtins.range(10): y=x%8")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(RangeBasedSimplify, node)
  >>> print(pm.dump(backend.Python, node))
  def any():
      for x in builtins.range(10):
          y = (x if (x < 8) else (x - 8))
  
  >>> node = ast.parse("def any(): x = 1 or 2; return 3 == x")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(RangeBasedSimplify, node)
  >>> print(pm.dump(backend.Python, node))
  def any():
      x = (1 or 2)
      return 0
  
  >>> node = ast.parse("def a(i): x = 1,1,2; return x[2], x[0 if i else 1]")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(RangeBasedSimplify, node)
  >>> print(pm.dump(backend.Python, node))
  def a(i):
      x = (1, 1, 2)
      return (2, 1)
code: def visit_OMPDirective(self, node):
      return node
  
file_path: pythran/pythran/optimizations/range_based_simplify.py
imports: from pythran.analyses import RangeValues
  from pythran.passmanager import Transformation
  import gast
  from math import isinf
  from copy import deepcopy
label_desc: Use image node_id 2 for calling the RangeBasedSimplify obj's underlying member method code with example usage: obj.visit_OMPDirective(node) and returns: node