text: # test the functions imported from cmath
  
  try:
      from cmath import *
  except ImportError:
      print("SKIP")
      raise SystemExit
  
  # make sure these constants exist in cmath
  print("%.5g" % e)
  print("%.5g" % pi)
  
  test_values_non_zero = []
  base_values = (0.0, 0.5, 1.2345, 10.0)
  for r in base_values:
      for i in base_values:
          if r != 0.0 or i != 0.0:
              test_values_non_zero.append(complex(r, i))
          if r != 0.0:
              test_values_non_zero.append(complex(-r, i))
          if i != 0.0:
              test_values_non_zero.append(complex(r, -i))
          if r != 0.0 and i != 0.0:
              test_values_non_zero.append(complex(-r, -i))
  test_values = [
      complex(0.0, 0.0),
  ] + test_values_non_zero
  print(test_values)
  
  functions = [
      ("phase", phase, test_values),
      ("polar", polar, test_values),
      (
          "rect",
          rect,
          ((0, 0), (0, 1), (0, -1), (1, 0), (-1, 0), (1, 1), (-1, 1), (1, -1), (123.0, -456.0)),
      ),
      ("exp", exp, test_values),
      ("log", log, test_values_non_zero),
      ("sqrt", sqrt, test_values),
      ("cos", cos, test_values),
      ("sin", sin, test_values),
  ]
  
  for f_name, f, test_vals in functions:
      print(f_name)
      for val in test_vals:
          if type(val) == tuple:
              ret = f(*val)
          else:
              ret = f(val)
          if type(ret) == float:
              print("%.5g" % ret)
          elif type(ret) == tuple:
              print("%.5g %.5g" % ret)
          else:
              # some test (eg cmath.sqrt(-0.5)) disagree with CPython with tiny real part
              real = ret.real
              if abs(real) < 1e-6:
                  real = 0.0
              print("complex(%.5g, %.5g)" % (real, ret.imag))
  