code: def to_type(upcast_type, varlist):
      
      # convert_type = type(np.array([0], upcast_type)[0])
  
      for i in range(len(varlist)):
  
          # convert scalars to complex
          if np.isscalar(varlist[i]):
              varlist[i] = np.array([varlist[i]], upcast_type)[0]
          else:
              # convert sparse and dense mats to complex
              try:
                  if varlist[i].dtype != upcast_type:
                      varlist[i] = varlist[i].astype(upcast_type)
              except AttributeError:
                  warn('Failed to cast in to_type')
                  pass
  
      return varlist
docs: Loop over all elements of varlist and convert them to upcasttype.
  
      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 to_type
      >>> from scipy.sparse.sputils import upcast
      >>> x = np.ones((5,1))
      >>> y = 2.0j*np.ones((5,1))
      >>> varlist = to_type(upcast(x.dtype, y.dtype), [x, y])