code: def test_precision(self, precision, cls):
      def f(x):
          net = cls(
              2, output_channels=3, kernel_shape=3, padding="VALID"
          )
          return net(x, precision=precision)
  
      f = transform.transform(f)
      rng = jax.random.PRNGKey(42)
      x = jnp.zeros([2, 16, 16, 4])
      params = f.init(rng, x)
      c = (
          jax.jit(lambda x: f.apply(params, None, x))
          .lower(x)
          .compiler_ir(dialect="hlo")
      )
      hlo = c.as_hlo_text()
      op_line = next(l for l in hlo.split("\n") if "convolution(" in l)
      if (
          precision is not None
          and precision != jax.lax.Precision.DEFAULT
      ):
          name = str(precision).lower()
          self.assertRegex(
              op_line, f"operand_precision={{{name},{name}}}"
          )
      else:
          self.assertNotIn("operand_precision", op_line)
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  from haiku._src import conv
  from haiku._src import initializers
  from haiku._src import test_utils
  from haiku._src import transform
  import jax
  from jax import random
  import jax.numpy
  import numpy
label_desc: Use image node_id 1 for calling the PrecisionTest obj's underlying member method code with example usage: obj.test_precision(precision, cls) and returns: net