[Scipy-svn] r3367 - in trunk/scipy/ndimage: . src tests

scipy-svn at scipy.org scipy-svn at scipy.org
Mon Sep 24 10:34:07 EDT 2007


Author: stefan
Date: 2007-09-24 09:33:35 -0500 (Mon, 24 Sep 2007)
New Revision: 3367

Modified:
   trunk/scipy/ndimage/measurements.py
   trunk/scipy/ndimage/src/ni_measure.c
   trunk/scipy/ndimage/tests/test_ndimage.py
Log:
Some systems have DBL_MIN defined as 0.  Changed to use -DBL_MAX
instead.  Fixes ticket #501.


Modified: trunk/scipy/ndimage/measurements.py
===================================================================
--- trunk/scipy/ndimage/measurements.py	2007-09-23 19:17:48 UTC (rev 3366)
+++ trunk/scipy/ndimage/measurements.py	2007-09-24 14:33:35 UTC (rev 3367)
@@ -197,12 +197,13 @@
     return _nd_image.statistics(input, labels, index, 3)
 
 
-def maximum(input, labels = None, index = None):
-    """Calculate the maximum of the values of the array.
+def maximum(input, labels=None, index=None):
+    """Return the maximum input value.
 
     The index parameter is a single label number or a sequence of
     label numbers of the objects to be measured. If index is None, all
     values are used where labels is larger than zero.
+
     """
     input = numpy.asarray(input)
     if numpy.iscomplexobj(input):

Modified: trunk/scipy/ndimage/src/ni_measure.c
===================================================================
--- trunk/scipy/ndimage/src/ni_measure.c	2007-09-23 19:17:48 UTC (rev 3366)
+++ trunk/scipy/ndimage/src/ni_measure.c	2007-09-24 14:33:35 UTC (rev 3367)
@@ -545,7 +545,7 @@
     if (minimum)
       minimum[jj] = DBL_MAX;
     if (maximum)
-      maximum[jj] = DBL_MIN;
+      maximum[jj] = -DBL_MAX;
     if (min_pos)
       min_pos[jj] = 0;
     if (max_pos)
@@ -576,7 +576,7 @@
         if (min_pos)
           min_pos[idx] = jj;
       }
-      if (maximum && val > maximum[idx]) {
+      if (maximum && (val > maximum[idx])) {
         maximum[idx] = val;
         if (max_pos)
           max_pos[idx] = jj;
@@ -596,7 +596,7 @@
   }
   if (maximum) {
     for(jj = 0; jj < n_results; jj++) {
-      if (!(maximum[jj] > DBL_MIN))
+      if (!(maximum[jj] > -DBL_MAX))
         maximum[jj] = 0.0;
     }
   }

Modified: trunk/scipy/ndimage/tests/test_ndimage.py
===================================================================
--- trunk/scipy/ndimage/tests/test_ndimage.py	2007-09-23 19:17:48 UTC (rev 3366)
+++ trunk/scipy/ndimage/tests/test_ndimage.py	2007-09-24 14:33:35 UTC (rev 3367)
@@ -2933,6 +2933,11 @@
                                                index = [2, 3, 8])
             self.failUnless(output == [3.0, 4.0, 0.0])
 
+    def test_maximum05(self):
+        "Ticket #501"
+        x = numpy.array([-3,-2,-1])
+        assert_equal(ndimage.maximum(x),-1)
+
     def test_variance01(self):
         "variance 1"
         for type in self.types:




More information about the Scipy-svn mailing list