code: def _bn_ok_dtype(dtype: DtypeObj, name: str) -> bool:
      # Bottleneck chokes on datetime64, PeriodDtype (or and EA)
      if not is_object_dtype(dtype) and not needs_i8_conversion(dtype):
          # GH 42878
          # Bottleneck uses naive summation leading to O(n) loss of precision
          # unlike numpy which implements pairwise summation, which has O(log(n)) loss
          # crossref: https://github.com/pydata/bottleneck/issues/379
  
          # GH 15507
          # bottleneck does not properly upcast during the sum
          # so can overflow
  
          # GH 9422
          # further we also want to preserve NaN when all elements
          # are NaN, unlike bottleneck/numpy which consider this
          # to be 0
          return name not in ["nansum", "nanprod", "nanmean"]
      return False
  
imports: from __future__ import annotations
  import functools
  import itertools
  import operator
  from typing import Any, Callable, cast
  import warnings
  import numpy
  from pandas._config import get_option
  from pandas._libs import NaT, NaTType, iNaT, lib
  from pandas._typing import ArrayLike, AxisInt, CorrelationMethod, Dtype, DtypeObj, F, Scalar, Shape, npt
  from pandas.compat._optional import import_optional_dependency
  from pandas.util._exceptions import find_stack_level
  from pandas.core.dtypes.common import is_any_int_dtype, is_bool_dtype, is_complex, is_datetime64_any_dtype, is_float, is_float_dtype, is_integer, is_integer_dtype, is_numeric_dtype, is_object_dtype, is_scalar, is_timedelta64_dtype, needs_i8_conversion, pandas_dtype
  from pandas.core.dtypes.dtypes import PeriodDtype
  from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna
  from pandas.core.construction import extract_array
label_desc: Use image node_id 2 for calling a global function with example usage: _bn_ok_dtype(dtype, name) and returns: False, unknown