'min compares two values numerically and returns the minimum.
If either operand is a NaN then the general rules apply.
Otherwise, the operands are compared as though by the compare
operation.  If they are numerically equal then the left-hand operand
is chosen as the result.  Otherwise the minimum (closer to negative
infinity) of the two operands is chosen as the result.
>>> ExtendedContext.min(Decimal(\'3\'), Decimal(\'2\'))
Decimal(\'2\')
>>> ExtendedContext.min(Decimal(\'-10\'), Decimal(\'3\'))
Decimal(\'-10\')
>>> ExtendedContext.min(Decimal(\'1.0\'), Decimal(\'1\'))
Decimal(\'1.0\')
>>> ExtendedContext.min(Decimal(\'7\'), Decimal(\'NaN\'))
Decimal(\'7\')
>>> ExtendedContext.min(1, 2)
Decimal(\'1\')
>>> ExtendedContext.min(Decimal(1), 2)
Decimal(\'1\')
>>> ExtendedContext.min(1, Decimal(29))
Decimal(\'1\')'

def min(self, a, b):

    a = _convert_other(a, raiseit=True)
    return a.min(b, context=self)
