def div(numer, denom):
    """PFA division behavior: inf and -inf for a finite number divided by zero and nan for 0/0.

    Also ensures that return type of any two numbers (including integers) is floating point.

    :type numer: number
    :param numer: the numerator
    :type denom: number
    :param denom: the denominator
    :rtype: float
    :return: fraction, including non-numeric possibilities
    """
    try:
        return numer / float(denom)
    except ZeroDivisionError:
        if numer > 0.0:
            return float('inf')
        elif numer < 0.0:
            return float('-inf')
        else:
            return float('nan')
