code: def mpc_nthroot(z, n, prec, rnd=round_fast):
      """
      Complex n-th root.
  
      Use Newton method as in the real case when it is faster,
      otherwise use z**(1/n)
      """
      a, b = z
      if a[0] == 0 and b == fzero:
          re = mpf_nthroot(a, n, prec, rnd)
          return (re, fzero)
      if n < 2:
          if n == 0:
              return mpc_one
          if n == 1:
              return mpc_pos((a, b), prec, rnd)
          if n == -1:
              return mpc_div(mpc_one, (a, b), prec, rnd)
          inverse = mpc_nthroot(
              (a, b), -n, prec + 5, reciprocal_rnd[rnd]
          )
          return mpc_div(mpc_one, inverse, prec, rnd)
      if n <= 20:
          prec2 = int(1.2 * (prec + 10))
          asign, aman, aexp, abc = a
          bsign, bman, bexp, bbc = b
          pf = mpc_abs((a, b), prec)
          if pf[-2] + pf[-1] > -10 and pf[-2] + pf[-1] < prec:
              af = to_fixed(a, prec2)
              bf = to_fixed(b, prec2)
              re, im = mpc_nthroot_fixed(af, bf, n, prec2)
              extra = 10
              re = from_man_exp(re, -prec2 - extra, prec2, rnd)
              im = from_man_exp(im, -prec2 - extra, prec2, rnd)
              return re, im
      fn = from_int(n)
      prec2 = prec + 10 + 10
      nth = mpf_rdiv_int(1, fn, prec2)
      re, im = mpc_pow((a, b), (nth, fzero), prec2, rnd)
      re = normalize(re[0], re[1], re[2], re[3], prec, rnd)
      im = normalize(im[0], im[1], im[2], im[3], prec, rnd)
      return re, im
  
imports: import sys
  from .backend import MPZ, MPZ_ZERO, MPZ_ONE, MPZ_TWO, BACKEND
  from .libmpf import round_floor, round_ceiling, round_down, round_up, round_nearest, round_fast, bitcount, bctable, normalize, normalize1, reciprocal_rnd, rshift, lshift, giant_steps, negative_rnd, to_str, to_fixed, from_man_exp, from_float, to_float, from_int, to_int, fzero, fone, ftwo, fhalf, finf, fninf, fnan, fnone, mpf_abs, mpf_pos, mpf_neg, mpf_add, mpf_sub, mpf_mul, mpf_div, mpf_mul_int, mpf_shift, mpf_sqrt, mpf_hypot, mpf_rdiv_int, mpf_floor, mpf_ceil, mpf_nint, mpf_frac, mpf_sign, mpf_hash, ComplexResult
  from .libelefun import mpf_pi, mpf_exp, mpf_log, mpf_cos_sin, mpf_cosh_sinh, mpf_tan, mpf_pow_int, mpf_log_hypot, mpf_cos_sin_pi, mpf_phi, mpf_cos, mpf_sin, mpf_cos_pi, mpf_sin_pi, mpf_atan, mpf_atan2, mpf_cosh, mpf_sinh, mpf_tanh, mpf_asin, mpf_acos, mpf_acosh, mpf_nthroot, mpf_fibonacci
label_desc: Use image node_id 36 for calling a global function with example usage: mpc_nthroot(z, n, prec, rnd) and returns: re,  im, re,  fzero, mpc_div, mpc_one, mpc_pos, mpc_div, re,  im