code: def unpack_single_4bitx2(
      x: Union[np.ndarray, np.dtype, float], signed: bool
  ) -> Tuple[np.ndarray, np.ndarray]:
      unpack_signed = lambda x: np.where(
          (x >> 3) == 0, x, x | 0xF0
      )  # noqa: E731
      """Unpack a single byte 4bitx2 to two 4 bit elements
      Args:
          x: Input data
          signed: boolean, whether to interpret as signed int4.
      Returns:
          A tuple of ndarrays containing int4 elements (sign-extended to int8/uint8)
      """
      if not isinstance(x, np.ndarray):
          x = np.asarray(x)
      x_low = x & 0x0F
      x_high = x >> 4
      x_low = unpack_signed(x_low) if signed else x_low
      x_high = unpack_signed(x_high) if signed else x_high
      dtype = np.int8 if signed else np.uint8
      return (x_low.astype(dtype), x_high.astype(dtype))
  
imports: from typing import Tuple, Union
  import numpy
label_desc: Use image node_id 3 for calling a global function with example usage: unpack_single_4bitx2(x, signed) and returns: x_low,  x_high