code: def _return_float_dtype(X, Y):
      """
      1. If dtype of X and Y is float32, then dtype float32 is returned.
      2. Else dtype float is returned.
      """
      if not issparse(X) and not isinstance(X, np.ndarray):
          X = np.asarray(X)
  
      if Y is None:
          Y_dtype = X.dtype
      elif not issparse(Y) and not isinstance(Y, np.ndarray):
          Y = np.asarray(Y)
          Y_dtype = Y.dtype
      else:
          Y_dtype = Y.dtype
  
      if X.dtype == Y_dtype == np.float32:
          dtype = np.float32
      else:
          dtype = float
  
      return X, Y, dtype
  
imports: import itertools
  import warnings
  from functools import partial
  from numbers import Integral, Real
  import numpy
  from joblib import effective_n_jobs
  from scipy.sparse import csr_matrix, issparse
  from scipy.spatial import distance
  from ..None import config_context
  from ..exceptions import DataConversionWarning
  from ..preprocessing import normalize
  from ..utils import check_array, gen_batches, gen_even_slices, get_chunk_n_rows, is_scalar_nan
  from ..utils._mask import _get_mask
  from ..utils._param_validation import Hidden, Interval, MissingValues, Options, StrOptions, validate_params
  from ..utils.extmath import row_norms, safe_sparse_dot
  from ..utils.fixes import parse_version, sp_base_version
  from ..utils.parallel import Parallel, delayed
  from ..utils.validation import _num_samples, check_non_negative
  from ._pairwise_distances_reduction import ArgKmin
  from ._pairwise_fast import _chi2_kernel_fast, _sparse_manhattan
label_desc: Use image node_id 1 for calling a global function with example usage: _return_float_dtype(X, Y) and returns: X,  Y,  dtype