Issue #4084: Fix max, min, max_mag and min_mag Decimal methods to

give correct results in the case where one argument is a quiet NaN
and the other is a finite number that requires rounding.
Thanks Mark Dickinson.
This commit is contained in:
Facundo Batista 2008-12-11 04:19:46 +00:00
parent 240028cb77
commit e29d435e0c
3 changed files with 37 additions and 16 deletions

View file

@ -2563,10 +2563,10 @@ class Decimal(object):
sn = self._isnan()
on = other._isnan()
if sn or on:
if on == 1 and sn != 2:
return self._fix_nan(context)
if sn == 1 and on != 2:
return other._fix_nan(context)
if on == 1 and sn == 0:
return self._fix(context)
if sn == 1 and on == 0:
return other._fix(context)
return self._check_nans(other, context)
c = self._cmp(other)
@ -2605,10 +2605,10 @@ class Decimal(object):
sn = self._isnan()
on = other._isnan()
if sn or on:
if on == 1 and sn != 2:
return self._fix_nan(context)
if sn == 1 and on != 2:
return other._fix_nan(context)
if on == 1 and sn == 0:
return self._fix(context)
if sn == 1 and on == 0:
return other._fix(context)
return self._check_nans(other, context)
c = self._cmp(other)
@ -3163,10 +3163,10 @@ class Decimal(object):
sn = self._isnan()
on = other._isnan()
if sn or on:
if on == 1 and sn != 2:
return self._fix_nan(context)
if sn == 1 and on != 2:
return other._fix_nan(context)
if on == 1 and sn == 0:
return self._fix(context)
if sn == 1 and on == 0:
return other._fix(context)
return self._check_nans(other, context)
c = self.copy_abs()._cmp(other.copy_abs())
@ -3193,10 +3193,10 @@ class Decimal(object):
sn = self._isnan()
on = other._isnan()
if sn or on:
if on == 1 and sn != 2:
return self._fix_nan(context)
if sn == 1 and on != 2:
return other._fix_nan(context)
if on == 1 and sn == 0:
return self._fix(context)
if sn == 1 and on == 0:
return other._fix(context)
return self._check_nans(other, context)
c = self.copy_abs()._cmp(other.copy_abs())