code: def _run(  # type: ignore
      self,
      a,
      a_scale,
      a_zero_point,
      b,
      b_scale,
      b_zero_point,
      y_scale,
      y_zero_point,
  ):
      A = a.astype(np.int32)
      if a_zero_point is not None:
          A -= a_zero_point.astype(np.int32)
      B = b.astype(np.int32)
      if b_zero_point is not None:
          B -= b_zero_point.astype(np.int32)
      C = np.matmul(A, B)
      D = C * (a_scale * b_scale / y_scale)
      if y_zero_point is not None:
          D += y_zero_point
          return (np.rint(D).astype(y_zero_point.dtype),)
      return (np.rint(D).astype(a.dtype),)
  
imports: import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 1 for calling the QLinearMatMul obj's underlying member method code with example usage: obj._run(a, a_scale, a_zero_point, b, b_scale, b_zero_point, y_scale, y_zero_point) and returns: np, np