def optimum_projected_function_spd(optimum_function, low_dimensional_spd_manifold, projection_matrix):
    """
    This function returns the global minimum (x, f(x)) of a test function defined on a projection of a SPD manifold
    S^D_++ in a lower dimensional SPD manifold S^d_++.
    Note that, as the inverse of the projection function is not available, the location of the optimum x on the
    low-dimensional manifold is returned.

    Note: test functions and their global minimum are defined in test_function_spd.py.

    Parameters
    ----------
    :param optimum_function: function returning the global minimum (x, f(x)) of the test function on S^d_++
    :param low_dimensional_spd_manifold: d-dimensional SPD manifold                 (pymanopt manifold)
    :param projection_matrix: element of the Grassmann manifold                     (D x d)

    Returns
    -------
    :return opt_x: location of the global minimum of the Ackley function on the low-dimensional SPD manifold
    :return opt_y: value of the global minimum of the Ackley function on the SPD manifold
    """
    # Global minimum on nested SPD
    nested_opt_x, opt_y = optimum_function(low_dimensional_spd_manifold)

    return nested_opt_x, opt_y