code: def testSparseMatmul(self):
      X = jnp.arange(16.0, dtype="float32").reshape(4, 4)
      Xsp = BCOO.fromdense(X)
      Y = jnp.ones(4, dtype="int32")
      Ysp = BCOO.fromdense(Y)
  
      # Note: deliberately testing with mixed precision
      assert Xsp.dtype != Ysp.dtype
  
      # dot_general
      result_sparse = self.sparsify(lax.dot)(Xsp, Y)
      result_dense = lax.dot(X, Y)
      self.assertAllClose(result_sparse, result_dense)
  
      # rdot_general
      result_sparse = self.sparsify(lax.dot)(Y, Xsp)
      result_dense = lax.dot(Y, X)
      self.assertAllClose(result_sparse, result_dense)
  
      # spdot_general
      result_sparse = self.sparsify(lax.dot)(Xsp, Ysp)
      result_dense = lax.dot(X, Y)
      self.assertAllClose(result_sparse.todense(), result_dense)
  
imports: from functools import partial
  import math
  import operator
  from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  import jax
  from jax import config, jit, lax
  import jax.numpy
  import jax._src.test_util
  from jax.experimental.sparse import BCOO, BCSR, sparsify, todense, SparseTracer
  from jax.experimental.sparse.transform import arrays_to_spvalues, spvalues_to_arrays, sparsify_raw, SparsifyValue, SparsifyEnv
  from jax.experimental.sparse.util import CuSparseEfficiencyWarning
  from jax.experimental.sparse import test_util
label_desc: Use image node_id 10 for calling the SparsifyTest obj's underlying member method code with example usage: obj.testSparseMatmul() without return types