code: def _broadcastable_arrays(draw):
      shapes = draw(helpers.mutually_broadcastable_shapes(num_shapes=3))
      dtypes, values = draw(
          helpers.dtype_and_values(
              available_dtypes=helpers.get_dtypes("valid"),
              shape=shapes[0],
          )
      )
      min_val = draw(
          st.one_of(
              st.floats(-5, 5),
              st.just(None),
              helpers.dtype_and_values(
                  available_dtypes=helpers.get_dtypes("valid"),
                  shape=shapes[1],
              ),
          )
      )
      max_val = draw(
          st.one_of(
              st.floats(-5, 5),
              st.just(None),
              helpers.dtype_and_values(
                  available_dtypes=helpers.get_dtypes("valid"),
                  shape=shapes[2],
              ),
          )
      )
      if min_val is None and max_val is None:
          generate_max = draw(st.booleans())
          if generate_max:
              max_val = draw(
                  helpers.dtype_and_values(
                      available_dtypes=helpers.get_dtypes("valid"),
                      shape=shapes[2],
                  )
              )
          else:
              min_val = draw(
                  helpers.dtype_and_values(
                      available_dtypes=helpers.get_dtypes("valid"),
                      shape=shapes[1],
                  )
              )
      if min_val is not None:
          if not isinstance(min_val, float):
              dtypes.append(min_val[0][0])
              min_val = min_val[1][0]
          else:
              dtypes.append(ivy.float32)
      if max_val is not None:
          if not isinstance(max_val, float):
              dtypes.append(max_val[0][0])
              max_val = max_val[1][0]
          else:
              dtypes.append(ivy.float32)
      return dtypes, values[0], min_val, max_val
  
imports: import numpy
  from hypothesis import strategies, assume
  import ivy
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test
label_desc: Use image node_id 3 for calling a global function with example usage: _broadcastable_arrays(draw) and returns: dtypes,  values,  min_val,  max_val