def _construct_rel_error_list(correct_results, actual_results, printer=None, verbose=False):
    """
    Construct a list providing the relative utility error for each term in actual_results.
    Each term in actual_results must be present in correct_results.
    :param correct_results: The correct utility for each term.
    :type correct_results: dict[Term, float]
    :param actual_results: The found utility for each term.
    :type actual_results: dict[Term, float]
    :param printer: The printer to write the information to.
    :type printer: Printer
    :param verbose: Whether to print intermediate information.
    :type verbose: bool
    """
    rel_error_list = list()
    for term, found_utility in actual_results.items():
        correct_utility = correct_results[term]
        error = (abs(correct_utility - found_utility))
        if correct_utility != 0:
            rel_error = error / abs(correct_utility)
            rel_error_list.append(rel_error)
        else:
            rel_error = '-'
        if printer is None and verbose:
            print("Expected: %s; \t Found: %s; \t Error: %s; \t Relative error: %s; \t For term: %s;" %
                  (correct_utility, found_utility, error, rel_error, term))
        elif printer is not None:
            printer.print("Expected: %s; \t Found: %s; \t Error: %s; \t Relative error: %s; \t For term: %s;" %
                          (correct_utility, found_utility, error, rel_error, term))
    return rel_error_list