code: def min_column_type(x, expected_type):
      """
      Return the smallest dtype which can represent all
      elements of the `NumericalColumn` `x`
      If the column is not a subtype of `np.signedinteger` or `np.floating`
      returns the same dtype as the dtype of `x` without modification
      """
  
      if not isinstance(x, cudf.core.column.NumericalColumn):
          raise TypeError(
              "Argument x must be of type column.NumericalColumn"
          )
      if x.null_count == len(x):
          return x.dtype
  
      if np.issubdtype(x.dtype, np.floating):
          return get_min_float_dtype(x)
  
      elif np.issubdtype(expected_type, np.integer):
          max_bound_dtype = np.min_scalar_type(x.max())
          min_bound_dtype = np.min_scalar_type(x.min())
          result_type = np.promote_types(
              max_bound_dtype, min_bound_dtype
          )
      else:
          result_type = x.dtype
  
      return cudf.dtype(result_type)
  
imports: import datetime
  from collections import namedtuple
  from decimal import Decimal
  import cupy
  import numpy
  import pandas
  import pyarrow
  from pandas.core.dtypes.common import infer_dtype_from_object
  import cudf
  from cudf._typing import DtypeObj
  from cudf.api.types import is_bool, is_float, is_integer
label_desc: Use image node_id 14 for calling a global function with example usage: min_column_type(x, expected_type) and returns: cudf, x, get_min_float_dtype