[Python-checkins] r60269 - python/trunk/Lib/rational.py

raymond.hettinger python-checkins at python.org
Fri Jan 25 00:50:26 CET 2008


Author: raymond.hettinger
Date: Fri Jan 25 00:50:26 2008
New Revision: 60269
Modified:
 python/trunk/Lib/rational.py
Log:
More code cleanup. Remove unnecessary indirection to useless class methods.
Modified: python/trunk/Lib/rational.py
==============================================================================
--- python/trunk/Lib/rational.py	(original)
+++ python/trunk/Lib/rational.py	Fri Jan 25 00:50:26 2008
@@ -285,8 +285,9 @@
 __truediv__, __rtruediv__ = _operator_fallbacks(_div, operator.truediv)
 __div__, __rdiv__ = _operator_fallbacks(_div, operator.div)
 
- @classmethod
- def _floordiv(cls, a, b):
+ def __floordiv__(a, b):
+ """a // b"""
+ # Will be math.floor(a / b) in 3.0.
 div = a / b
 if isinstance(div, RationalAbc):
 # trunc(math.floor(div)) doesn't work if the rational is
@@ -296,28 +297,27 @@
 else:
 return math.floor(div)
 
- def __floordiv__(a, b):
- """a // b"""
- # Will be math.floor(a / b) in 3.0.
- return a._floordiv(a, b)
-
 def __rfloordiv__(b, a):
 """a // b"""
 # Will be math.floor(a / b) in 3.0.
- return b._floordiv(a, b)
-
- @classmethod
- def _mod(cls, a, b):
- div = a // b
- return a - b * div
+ div = a / b
+ if isinstance(div, RationalAbc):
+ # trunc(math.floor(div)) doesn't work if the rational is
+ # more precise than a float because the intermediate
+ # rounding may cross an integer boundary.
+ return div.numerator // div.denominator
+ else:
+ return math.floor(div)
 
 def __mod__(a, b):
 """a % b"""
- return a._mod(a, b)
+ div = a // b
+ return a - b * div
 
 def __rmod__(b, a):
 """a % b"""
- return b._mod(a, b)
+ div = a // b
+ return a - b * div
 
 def __pow__(a, b):
 """a ** b


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /