code: def span(
      array: np.ndarray,
      lower_bound: Union[List[Any], Tuple[Any, Any], np.ndarray],
      upper_bound: Union[List, Tuple, np.ndarray],
  ) -> np.ndarray:
      """Spans a hypercomplex number between lower and upper bounds.
  
      Args:
          array: A 2-dimensional input array.
          lb: Lower bounds to be spanned.
          ub: Upper bounds to be spanned.
  
      Returns:
          (np.ndarray): Spanned values that can be used as decision variables.
  
      """
  
      lb = np.asarray(lower_bound)
      ub = np.asarray(upper_bound)
  
      array_span = (ub - lb) * (
          norm(array) / np.sqrt(array.shape[1])
      ) + lb
  
      return array_span
  
imports: from functools import wraps
  from typing import Any, List, Tuple, Union
  import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: span(array, lower_bound, upper_bound) and returns: array_span