old_contents: from test_support import TestFailed
  from random import random
  
  # XXX need many, many more tests here.
  
  nerrors = 0
  
  def check_close_real(x, y, eps=1e-9):
      """Return true iff floats x and y "are close\""""
      # put the one with larger magnitude second
      if abs(x) > abs(y):
          x, y = y, x
      if y == 0:
          return abs(x) < eps
      if x == 0:
          return abs(y) < eps
      # check that relative difference < eps
      return abs((x-y)/y) < eps
  
  def check_close(x, y, eps=1e-9):
      """Return true iff complexes x and y "are close\""""
      return check_close_real(x.real, y.real, eps) and \
             check_close_real(x.imag, y.imag, eps)
  
  def test_div(x, y):
      """Compute complex z=x*y, and check that z/x==y and z/y==x."""
      global nerrors
      z = x * y
      if x != 0:
          q = z / x
          if not check_close(q, y):
              nerrors += 1
              print "%r / %r == %r but expected %r" % (z, x, q, y)
      if y != 0:
          q = z / y
          if not check_close(q, x):
              nerrors += 1
              print "%r / %r == %r but expected %r" % (z, y, q, x)
  
  simple_real = [float(i) for i in range(-5, 6)]
  simple_complex = [complex(x, y) for x in simple_real for y in simple_real]
  for x in simple_complex:
      for y in simple_complex:
          test_div(x, y)
  
  # A naive complex division algorithm (such as in 2.0) is very prone to
  # nonsense errors for these (overflows and underflows).
  test_div(complex(1e200, 1e200), 1+0j)
  test_div(complex(1e-200, 1e-200), 1+0j)
  
  # Just for fun.
  for i in range(100):
      test_div(complex(random(), random()),
               complex(random(), random()))
  
  try:
      z = 1.0 / (0+0j)
  except ZeroDivisionError:
      pass
  else:
      nerrors += 1
      raise TestFailed("Division by complex 0 didn't raise ZeroDivisionError")
  
  if nerrors:
      raise TestFailed("%d tests failed" % nerrors)
  
new_contents: from test_support import TestFailed
  from random import random
  
  # These tests ensure that complex math does the right thing; tests of
  # the complex() function/constructor are in test_b1.py.
  
  # XXX need many, many more tests here.
  
  nerrors = 0
  
  def check_close_real(x, y, eps=1e-9):
      """Return true iff floats x and y "are close\""""
      # put the one with larger magnitude second
      if abs(x) > abs(y):
          x, y = y, x
      if y == 0:
          return abs(x) < eps
      if x == 0:
          return abs(y) < eps
      # check that relative difference < eps
      return abs((x-y)/y) < eps
  
  def check_close(x, y, eps=1e-9):
      """Return true iff complexes x and y "are close\""""
      return check_close_real(x.real, y.real, eps) and \
             check_close_real(x.imag, y.imag, eps)
  
  def test_div(x, y):
      """Compute complex z=x*y, and check that z/x==y and z/y==x."""
      global nerrors
      z = x * y
      if x != 0:
          q = z / x
          if not check_close(q, y):
              nerrors += 1
              print "%r / %r == %r but expected %r" % (z, x, q, y)
      if y != 0:
          q = z / y
          if not check_close(q, x):
              nerrors += 1
              print "%r / %r == %r but expected %r" % (z, y, q, x)
  
  simple_real = [float(i) for i in range(-5, 6)]
  simple_complex = [complex(x, y) for x in simple_real for y in simple_real]
  for x in simple_complex:
      for y in simple_complex:
          test_div(x, y)
  
  # A naive complex division algorithm (such as in 2.0) is very prone to
  # nonsense errors for these (overflows and underflows).
  test_div(complex(1e200, 1e200), 1+0j)
  test_div(complex(1e-200, 1e-200), 1+0j)
  
  # Just for fun.
  for i in range(100):
      test_div(complex(random(), random()),
               complex(random(), random()))
  
  try:
      z = 1.0 / (0+0j)
  except ZeroDivisionError:
      pass
  else:
      nerrors += 1
      raise TestFailed("Division by complex 0 didn't raise ZeroDivisionError")
  
  if nerrors:
      raise TestFailed("%d tests failed" % nerrors)
  
subject: Add a comment explaining what these tests are for, and where to look for tests of complex().