@staticmethod
def _evalGroups(listOfTuples):
    """ decode a list of linear terms given as a (sign, number, name) tuple,
        where sign is '-' or '+', number is a string or None, and name is a
        string; 'number' may itself carry a sign

        Returns: list of (coefficient, name) tuples with float coefficients
        """
    tuples = []
    for sign, number, name in listOfTuples:
        if not number:
            number = 1.0
        if sign == '-':
            tuples.append((-float(number), name))
        else:
            tuples.append((float(number), name))
    return tuples
