code: def type_prep(upcast_type, varlist):
      
      varlist = to_type(upcast_type, varlist)
      for i in range(len(varlist)):
          if np.isscalar(varlist[i]):
              varlist[i] = np.array([varlist[i]])
  
      return varlist
docs: Upcast variables to a type.
  
      Loop over all elements of varlist and convert them to upcasttype
      The only difference with pyamg.util.utils.to_type(...), is that scalars
      are wrapped into (1,0) arrays.  This is desirable when passing
      the numpy complex data type to C routines and complex scalars aren't
      handled correctly
  
      Parameters
      ----------
      upcast_type : data type
          e.g. complex, float64 or complex128
      varlist : list
          list may contain arrays, mat's, sparse matrices, or scalars
          the elements may be float, int or complex
  
      Returns
      -------
      Returns upcast-ed varlist to upcast_type
  
      Notes
      -----
      Useful when harmonizing the types of variables, such as
      if A and b are complex, but x,y and z are not.
  
      Examples
      --------
      >>> import numpy as np
      >>> from pyamg.util.utils import type_prep
      >>> from scipy.sparse.sputils import upcast
      >>> x = np.ones((5,1))
      >>> y = 2.0j*np.ones((5,1))
      >>> z = 2.3
      >>> varlist = type_prep(upcast(x.dtype, y.dtype), [x, y, z])