code: def image_type_cast(image_list, pixeltype=None):
      
      if not isinstance(image_list, (list,tuple)):
          raise ValueError('image_list must be list of ANTsImage types')
  
      pixtypes = []
      for img in image_list:
          pixtypes.append(img.pixeltype)
  
      if pixeltype is None:
          pixeltype = 'unsigned char'
          for p in pixtypes:
              if p == 'double':
                  pixeltype = 'double'
              elif (p=='float') and (pixeltype!='double'):
                  pixeltype = 'float'
              elif (p=='unsigned int') and (pixeltype!='float') and (pixeltype!='double'):
                  pixeltype = 'unsigned int'
  
      out_images = []
      for img in image_list:
          if img.pixeltype == pixeltype:
              out_images.append(img)
          else:
              out_images.append(img.clone(pixeltype))
  
      return out_images
docs: Cast a list of images to the highest pixeltype present in the list
      or all to a specified type
      
      ANTsR function: `antsImageTypeCast`
  
      Arguments
      ---------
      image_list : list/tuple
          images to cast
  
      pixeltype : string (optional)
          pixeltype to cast to. If None, images will be cast to the highest
          precision pixeltype found in image_list
  
      Returns
      -------
      list of ANTsImages
          given images casted to new type