code: def cbpdn_xstep(k):
      
  
      YU = mp_Z_Y[k] - mp_Z_U[k]
      b = mp_DSf[k] + mp_xrho * sl.rfftn(YU, None, mp_cri.axisN)
      if mp_cri.Cd == 1:
          Xf = sl.solvedbi_sm(mp_Df, mp_xrho, b, axis=mp_cri.axisM)
      else:
          Xf = sl.solvemdbi_ism(mp_Df, mp_xrho, b, mp_cri.axisM, mp_cri.axisC)
      mp_Z_X[k] = sl.irfftn(Xf, mp_cri.Nv, mp_cri.axisN)
docs: Do the X step of the cbpdn stage. The only parameter is the slice
      index `k` and there are no return values; all inputs and outputs are
      from and to global variables.