code: def _coo_matmul(
      sp_data,
      sp_row,
      sp_col,
      sp_shape,
      sp_order,
      dn,
      transa,
      transb,
      transc,
      dtype=None,
  ):
      if dtype is None:
          dtype = numpy.result_type(sp_data.dtype, dn.dtype)
  
      A_data = sp_data
      if transa:
          A_row = sp_col
          A_col = sp_row
          A_shape = (sp_shape[1], sp_shape[0])
          if sp_order == "C":
              A_order = "F"
          elif sp_order == "F":
              A_order = "C"
          else:
              A_order = sp_order
      else:
          A_row = sp_row
          A_col = sp_col
          A_shape = sp_shape
          A_order = sp_order
      if transb:
          B = dn.swapaxes(-1, -2)
      else:
          B = dn
  
      xp = backend.get_array_module(A_data, B)
      if xp is numpy:
          C = _coo_matmul_cpu(A_data, A_row, A_col, A_shape, B, dtype)
      else:
          C = _coo_matmul_gpu(
              A_data, A_row, A_col, A_shape, A_order, B, dtype
          )
  
      if transc:
          C = C.swapaxes(-1, -2)
      return C
  
imports: import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  from chainer import utils
  from chainer.utils import type_check
label_desc: Use image node_id 1 for calling a global function with example usage: _coo_matmul(sp_data, sp_row, sp_col, sp_shape, sp_order, dn, transa, transb, transc, dtype) and returns: C