code: def _get_dtype_and_matrix(draw, *, symmetric=False):
      # batch_shape, shared, random_size
      input_dtype = draw(
          st.shared(st.sampled_from(draw(helpers.get_dtypes("float"))))
      )
      random_size = draw(helpers.ints(min_value=2, max_value=4))
      batch_shape = draw(
          helpers.get_shape(min_num_dims=1, max_num_dims=3)
      )
      if symmetric:
          num_independnt_vals = int(
              (random_size**2) / 2 + random_size / 2
          )
          array_vals_flat = np.array(
              draw(
                  helpers.array_values(
                      dtype=input_dtype,
                      shape=tuple(
                          list(batch_shape) + [num_independnt_vals]
                      ),
                      min_value=2,
                      max_value=5,
                  )
              )
          )
          array_vals = np.zeros(
              batch_shape + (random_size, random_size)
          )
          c = 0
          for i in range(random_size):
              for j in range(random_size):
                  if j < i:
                      continue
                  array_vals[..., i, j] = array_vals_flat[..., c]
                  array_vals[..., j, i] = array_vals_flat[..., c]
                  c += 1
          return [input_dtype], array_vals
      return [input_dtype], draw(
          helpers.array_values(
              dtype=input_dtype,
              shape=tuple(
                  list(batch_shape) + [random_size, random_size]
              ),
              min_value=2,
              max_value=5,
          )
      )
  
imports: import sys
  import numpy
  from hypothesis import assume, strategies
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test, BackendHandler
  from ivy_tests.test_ivy.helpers.hypothesis_helpers.general_helpers import matrix_is_stable
label_desc: Use image node_id 3 for calling a global function with example usage: _get_dtype_and_matrix(draw) and returns: list,  draw, list,  array_vals