You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2009/04/20 20:42:12 UTC

svn commit: r766793 - in /commons/proper/math/trunk/src: java/org/apache/commons/math/linear/SparseRealVector.java test/org/apache/commons/math/linear/SparseRealVectorTest.java

Author: luc
Date: Mon Apr 20 18:42:11 2009
New Revision: 766793

URL: http://svn.apache.org/viewvc?rev=766793&view=rev
Log:
optimized isInfinite for NaN vectors
reverted hashcode back to its previous behavior to avoid breaking consistency with equals

Modified:
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/SparseRealVector.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/SparseRealVectorTest.java

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/linear/SparseRealVector.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/SparseRealVector.java?rev=766793&r1=766792&r2=766793&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/linear/SparseRealVector.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/linear/SparseRealVector.java Mon Apr 20 18:42:11 2009
@@ -594,19 +594,18 @@
     /** {@inheritDoc} */
     public boolean isInfinite() {
         boolean infiniteFound = false;
-        boolean nanFound      = false;
         Iterator iter = entries.iterator();
         while (iter.hasNext()) {
             iter.advance();
             final double value = iter.value();
             if (Double.isNaN(value)) {
-                nanFound = true;
+                return false;
             }
             if (Double.isInfinite(value)) {
                 infiniteFound = true;
             }
         }
-        return infiniteFound && (!nanFound);
+        return infiniteFound;
     }
 
     /** {@inheritDoc} */
@@ -1234,12 +1233,6 @@
         temp = Double.doubleToLongBits(epsilon);
         result = prime * result + (int) (temp ^ (temp >>> 32));
         result = prime * result + virtualSize;
-        Iterator iter = entries.iterator();
-        while (iter.hasNext()) {
-            iter.advance();
-            temp = Double.doubleToLongBits(iter.value());
-            result = prime * result + (int) (temp ^ (temp >>> 32));
-        }
         return result;
     }
 

Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/linear/SparseRealVectorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/SparseRealVectorTest.java?rev=766793&r1=766792&r2=766793&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/linear/SparseRealVectorTest.java (original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/linear/SparseRealVectorTest.java Mon Apr 20 18:42:11 2009
@@ -1091,12 +1091,6 @@
         assertNotSame(v, new SparseRealVector(new double[] { 0, 1, 2 + Math.ulp(2)}));
         assertNotSame(v, new SparseRealVector(new double[] { 0, 1, 2, 3 }));
 
-        assertTrue(new SparseRealVector(new double[] { Double.NaN, 1, 2 }).hashCode() !=
-                      new SparseRealVector(new double[] { 0, Double.NaN, 2 }).hashCode());
-
-        assertTrue(new SparseRealVector(new double[] { Double.NaN, 1, 2 }).hashCode() !=
-                   new SparseRealVector(new double[] { 0, 1, 2 }).hashCode());
-
     }
 
     /** verifies that two vectors are close (sup norm) */