code: def mpc_ci_si_taylor(re, im, wp, which=0):
      # The following code is only designed for small arguments,
      # and not too small arguments (for relative accuracy)
      if re[1]:
          mag = re[2] + re[3]
      elif im[1]:
          mag = im[2] + im[3]
      if im[1]:
          mag = max(mag, im[2] + im[3])
      if mag > 2 or mag < -wp:
          raise NotImplementedError
      wp += 2 - mag
      zre = to_fixed(re, wp)
      zim = to_fixed(im, wp)
      z2re = (zim * zim - zre * zre) >> wp
      z2im = (-2 * zre * zim) >> wp
      tre = zre
      tim = zim
      one = MPZ_ONE << wp
      if which == 0:
          sre, sim, tre, tim, k = 0, 0, (MPZ_ONE << wp), 0, 2
      else:
          sre, sim, tre, tim, k = zre, zim, zre, zim, 3
      while max(abs(tre), abs(tim)) > 2:
          f = k * (k - 1)
          tre, tim = ((tre * z2re - tim * z2im) // f) >> wp, (
              (tre * z2im + tim * z2re) // f
          ) >> wp
          sre += tre // k
          sim += tim // k
          k += 2
      return from_man_exp(sre, -wp), from_man_exp(sim, -wp)
  
imports: import operator
  import math
  from .backend import MPZ_ZERO, MPZ_ONE, BACKEND, xrange, exec_
  from .libintmath import gcd
  from .libmpf import ComplexResult, round_fast, round_nearest, negative_rnd, bitcount, to_fixed, from_man_exp, from_int, to_int, from_rational, fzero, fone, fnone, ftwo, finf, fninf, fnan, mpf_sign, mpf_add, mpf_abs, mpf_pos, mpf_cmp, mpf_lt, mpf_le, mpf_gt, mpf_min_max, mpf_perturb, mpf_neg, mpf_shift, mpf_sub, mpf_mul, mpf_div, sqrt_fixed, mpf_sqrt, mpf_rdiv_int, mpf_pow_int, to_rational
  from .libelefun import mpf_pi, mpf_exp, mpf_log, pi_fixed, mpf_cos_sin, mpf_cos, mpf_sin, mpf_sqrt, agm_fixed
  from .libmpc import mpc_one, mpc_sub, mpc_mul_mpf, mpc_mul, mpc_neg, complex_int_pow, mpc_div, mpc_add_mpf, mpc_sub_mpf, mpc_log, mpc_add, mpc_pos, mpc_shift, mpc_is_infnan, mpc_zero, mpc_sqrt, mpc_abs, mpc_mpf_div, mpc_square, mpc_exp
  from .libintmath import ifac
  from .gammazeta import mpf_gamma_int, mpf_euler, euler_fixed
label_desc: Use image node_id 15 for calling a global function with example usage: mpc_ci_si_taylor(re, im, wp, which) and returns: from_man_exp,  from_man_exp