[Numpy-svn] r3812 - trunk/numpy/lib

numpy-svn at scipy.org numpy-svn at scipy.org
Wed May 23 18:03:48 EDT 2007


Author: oliphant
Date: 2007-05-23 17:03:42 -0500 (Wed, 23 May 2007)
New Revision: 3812

Modified:
   trunk/numpy/lib/getlimits.py
Log:
Fix up getlimits to work with Python2.3

Modified: trunk/numpy/lib/getlimits.py
===================================================================
--- trunk/numpy/lib/getlimits.py	2007-05-23 20:32:17 UTC (rev 3811)
+++ trunk/numpy/lib/getlimits.py	2007-05-23 22:03:42 UTC (rev 3812)
@@ -124,10 +124,14 @@
 
     """
 
+    _min_vals = {}
+    _max_vals = {}
+
     def __init__(self, type):
         self.dtype = N.dtype(type)
         self.kind = self.dtype.kind
         self.bits = self.dtype.itemsize * 8
+	self.key = "%s%d" % (self.kind, self.bits)
         if not self.kind in 'iu':
             raise ValueError("Invalid integer data type.")
 
@@ -136,16 +140,26 @@
         if self.kind == 'u':
             return 0
         else:
-            return -(1 << (self.bits-1))
+            try:
+                val = iinfo._min_vals[self.key]
+            except KeyError:
+                val = int(-(1L << (self.bits-1)))
+                iinfo._min_vals[self.key] = val
+            return val
 
     min = property(min)
 
     def max(self):
         """Maximum value of given dtype."""
-        if self.kind == 'u':
-            return (1 << self.bits) - 1
-        else:
-            return (1 << (self.bits-1)) - 1
+        try:
+            val = iinfo._max_vals[self.key]
+        except KeyError:
+            if self.kind == 'u':
+                val = int((1L << self.bits) - 1)
+            else:
+                val = int((1L << (self.bits-1)) - 1)
+            iinfo._max_vals[self.key] = val
+        return val
 
     max = property(max)
 




More information about the Numpy-svn mailing list