docs: def isclose(a, b, rel_tol=1e-9, abs_tol=0.0):
      '''Pure python and therefore slow version of the standard library isclose.
      Works on older versions of python though! Hasn't been unit tested, but has
      been tested.
      
      manual unit testing:
          
      from math import isclose as isclose2
      from random import uniform
      for i in range(10000000):
          a = uniform(-1, 1)
          b = uniform(-1, 1)
          rel_tol = uniform(0, 1)
          abs_tol = uniform(0, .001)
          ans1 = isclose(a, b, rel_tol, abs_tol)
          ans2 = isclose2(a, b, rel_tol=rel_tol, abs_tol=abs_tol)
          try:
              assert ans1 == ans2
          except:
              print(a, b, rel_tol, abs_tol)
      
      '''
      if (rel_tol < 0.0 or abs_tol < 0.0 ):
          raise ValueError('Negative tolerances')
          
      if ((a.real == b.real) and (a.imag == b.imag)):
          return True
      
      if (isinf(a.real) or isinf(a.imag) or
          isinf(b.real) or isinf(b.imag)):
          return False
  
      diff = abs(a - b)
      return (((diff <= rel_tol*abs(b)) or
               (diff <= rel_tol*abs(a))) or (diff <= abs_tol))