':param value: either an integer numerator, a
float/rational/other number, or an IFDRational
:param denominator: Optional integer denominator'

def __init__(self, value, denominator=1):

    self._denominator = denominator
    self._numerator = value
    self._val = float(1)
    if isinstance(value, Fraction):
        self._numerator = value.numerator
        self._denominator = value.denominator
        self._val = value
    if isinstance(value, IFDRational):
        self._denominator = value.denominator
        self._numerator = value.numerator
        self._val = value._val
        return
    if (denominator == 0):
        self._val = float('nan')
        return
    elif (denominator == 1):
        self._val = Fraction(value)
    else:
        self._val = Fraction(value, denominator)
