code: def fndrt(a, n):
      z = [complex(0, 0) for k in range(n)]
      if n == 1:
          z[0] = -a[0] / a[1]
          return z
      if n > 2:
          for k in range(n, 2, -1):
              #   Obtain an approximate root.
              root = complex(0.0, 0)
              err = 1.0e-12
              root = guerre(a, k, root, err, 1000)
              #   Refine the root by iterating five more times.
              err = 0.0
              root = guerre(a, k, root, err, 5)
              z[k - 1] = root
              #   Divide out the factor [z-root].
              for i in range(k, 0, -1):
                  a[i - 1] = a[i - 1] + root * a[i]
              for i in range(1, k + 1):
                  a[i - 1] = a[i]
      #   Solve the quadratic equation.
      z[1] = (
          0.5
          * (-a[1] + cmath.sqrt(a[1] * a[1] - 4.0 * a[0] * a[2]))
          / a[2]
      )
      z[0] = (
          0.5
          * (-a[1] - cmath.sqrt(a[1] * a[1] - 4.0 * a[0] * a[2]))
          / a[2]
      )
      return z
  
file_path: pythran/pythran/tests/cases/ramsurf.py
imports: import cmath
label_desc: Use image node_id 2 for calling a global function with example usage: fndrt(a, n) and returns: z, z