<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def iuwt_recomposition(in1, scale_adjust=0, mode='ser', core_count=1, store_on_gpu=False, smoothed_array=None):
 """ This function serves as a handler for the different implementations of the IUWT recomposition. It allows the different methods to be used almost interchangeably. INPUTS: in1 (no default):
 Array on which the decomposition is to be performed. scale_adjust (no default):
 Number of omitted scales. mode (default='ser') Implementation of the IUWT to be used - 'ser', 'mp' or 'gpu'. core_count (default=1) Additional option for multiprocessing - specifies core count. store_on_gpu (default=False):
 Boolean specifier for whether the decomposition is stored on the gpu or not. OUTPUTS: Returns the recomposition. """


    if mode=='ser':
        return ser_iuwt_recomposition(in1, scale_adjust, smoothed_array)
    elif mode=='mp':
        return mp_iuwt_recomposition(in1, scale_adjust, core_count, smoothed_array)
    elif mode=='gpu':
        return gpu_iuwt_recomposition(in1, scale_adjust, store_on_gpu, smoothed_array)