code: def int_scinter_ftype(
      ifmt: type[np.integer],
      slope: npt.ArrayLike = 1.0,
      inter: npt.ArrayLike = 0.0,
      default: type[np.floating] = np.float32,
  ) -> type[np.floating]:
      """float type containing int type `ifmt` * `slope` + `inter`
  
      Return float type that can represent the max and the min of the `ifmt` type
      after multiplication with `slope` and addition of `inter` with something
      like ``np.array([imin, imax], dtype=ifmt) * slope + inter``.
  
      Note that ``slope`` and ``inter`` get promoted to 1D arrays for this
      purpose to avoid the numpy scalar casting rules, which prevent scalars
      upcasting the array.
  
      Parameters
      ----------
      ifmt : object
          numpy integer type (e.g. np.int32)
      slope : float, optional
          slope, default 1.0
      inter : float, optional
          intercept, default 0.0
      default_out : object, optional
          numpy floating point type, default is ``np.float32``
  
      Returns
      -------
      ftype : object
          numpy floating point type
  
      Examples
      --------
      >>> int_scinter_ftype(np.int8, 1.0, 0.0) == np.float32
      True
      >>> int_scinter_ftype(np.int8, 1e38, 0.0) == np.float64
      True
  
      Notes
      -----
      It is difficult to make floats overflow with just addition because the
      deltas are so large at the extremes of floating point.  For example::
  
          >>> arr = np.array([np.finfo(np.float32).max], dtype=np.float32)
          >>> res = arr + np.iinfo(np.int16).max
          >>> arr == res
          array([ True])
      """
      ii = np.iinfo(ifmt)
      tst_arr = np.array([ii.min, ii.max], dtype=ifmt)
      try:
          return _ftype4scaled_finite(
              tst_arr, slope, inter, "read", default
          )
      except ValueError:
          raise ValueError("Overflow using highest floating point type")
  
imports: from __future__ import annotations
  import io
  import sys
  import typing
  import warnings
  from functools import reduce
  from operator import getitem, mul
  from os.path import exists, splitext
  import numpy
  from ._compression import COMPRESSED_FILE_LIKES
  from .casting import OK_FLOATS, shared_range
  from .externals.oset import OrderedSet
label_desc: Use image node_id 13 for calling a global function with example usage: int_scinter_ftype(ifmt, slope, inter, default) and returns: _ftype4scaled_finite