code: def _get_solve_matrices(draw):
      # batch_shape, random_size, shared
  
      # float16 causes a crash when filtering out matrices
      # for which `np.linalg.cond` is large.
      input_dtype_strategy = st.shared(
          st.sampled_from(draw(helpers.get_dtypes("float"))).filter(
              lambda x: "float16" not in x
          ),
          key="shared_dtype",
      )
      input_dtype = draw(input_dtype_strategy)
  
      dim = draw(helpers.ints(min_value=2, max_value=5))
  
      first_matrix = draw(
          helpers.array_values(
              dtype=input_dtype,
              shape=(dim, dim, dim, dim),
              min_value=1.2,
              max_value=5,
          ).filter(
              lambda x: np.linalg.det(x.reshape((dim**2, dim**2)))
              != 0
          )
      )
  
      second_matrix = draw(
          helpers.array_values(
              dtype=input_dtype,
              shape=(dim, dim),
              min_value=1.2,
              max_value=3,
          )
      )
  
      return input_dtype, first_matrix, second_matrix
  
imports: import sys
  import numpy
  from hypothesis import strategies, assume
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import assert_all_close, handle_frontend_test, BackendHandler
  from ivy_tests.test_ivy.test_functional.test_core.test_linalg import _get_dtype_and_matrix, _matrix_rank_helper
  from ivy_tests.test_ivy.helpers.hypothesis_helpers.general_helpers import matrix_is_stable
label_desc: Use image node_id 2 for calling a global function with example usage: _get_solve_matrices(draw) and returns: input_dtype,  first_matrix,  second_matrix