code: def sympy_empirical_equal(expr1, expr2):
  
      
  
      atoms_1 = expr1.atoms()
      atoms_1 = [a for a in atoms_1 if isinstance(a,sympy.Symbol)]
      atoms_2 = expr2.atoms()
      atoms_2 = [a for a in atoms_2 if isinstance(a,sympy.Symbol)]
  
  
      # lets us merge symbol in case one equation has more / different symbols
      atoms = set(atoms_1 + atoms_2)
  
  
      arbitrary_values = []
      arbitrary_values.append([i * 7.1 for i in range(1,len(atoms)+1)])
      arbitrary_values.append([i / 9.3 for i in range(1,len(atoms)+1)])
      arbitrary_values.append([i ** 2 for i in range(1,len(atoms)+1)])
  
      # test for arbitrary value. return false at the first failure
      for av in arbitrary_values:
          if not _eval_res_equal(expr1, expr2, atoms, av):
              return False
  
      return True
docs: Compare long , complex, expressions by replacing all symbols by a set of arbitrary expressions
  
      :param expr1: first expression
      :param expr2: second expression
      :return: True if expressions are empirically equal, false otherwise