<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def cum_returns_final(returns, starting_value=0):
 """ Compute total returns from simple returns. Parameters returns : pd.DataFrame, pd.Series, or np.ndarray Noncumulative simple returns of one or more timeseries. starting_value : float, optional The starting returns. Returns ------- total_returns : pd.Series, np.ndarray, or float If input is 1-dimensional (a Series or 1D numpy array), the result is a scalar. If input is 2-dimensional (a DataFrame or 2D numpy array), the result is a 1D array containing cumulative returns for each column of input. """

    if len(returns) == 0:
        return np.nan

    if isinstance(returns, pd.DataFrame):
        result = (returns + 1).prod()
    else:
        result = np.nanprod(returns + 1, axis=0)

    if starting_value == 0:
        result -= 1
    else:
        result *= starting_value

    return result