code: def test_default_bias_type_ios17(
      self, compute_unit, backend, x_input_type, weight_input_type
  ):
      # Start from iOS17, x and weight can have different dtype.
      # Test the default bias matches the dtype of weight.
      @mb.program(
          input_specs=[mb.TensorSpec(shape=(1, 2), dtype=types.fp32)],
          opset_version=backend.opset_version,
      )
      def prog(x):
          x = mb.cast(x=x, dtype=builtin_to_string(x_input_type))
          weight = np.random.rand(3, 2).astype(
              nptype_from_builtin(weight_input_type)
          )
          res = mb.linear(x=x, weight=weight)
          assert res.op.bias.val.dtype == nptype_from_builtin(
              weight_input_type
          )
          return res
  
file_path: coremltools/coremltools/converters/mil/mil/ops/tests/iOS17/test_linear.py
imports: import itertools
  import numpy
  import pytest
  import coremltools
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import types
  from coremltools.converters.mil.mil.ops.tests.iOS17 import backends
  from coremltools.converters.mil.mil.ops.tests.testing_utils import run_compare_builder
  from coremltools.converters.mil.mil.types import builtin_to_string, nptype_from_builtin
  from coremltools.converters.mil.mil.types.type_mapping import numpy_type_to_builtin_type
  from coremltools.converters.mil.testing_reqs import compute_units
label_desc: Use image node_id 2 for calling the TestLinear obj's underlying member method code with example usage: obj.test_default_bias_type_ios17(compute_unit, backend, x_input_type, weight_input_type) and returns: res