You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ce...@apache.org on 2012/07/12 15:17:09 UTC
svn commit: r1360662 - in
/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear:
ArrayRealVector.java OpenMapRealVector.java RealVector.java
Author: celestin
Date: Thu Jul 12 13:17:08 2012
New Revision: 1360662
URL: http://svn.apache.org/viewvc?rev=1360662&view=rev
Log:
MATH-812: fixed a bug in RealVector.dotProduct(RealVector).
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/ArrayRealVector.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/OpenMapRealVector.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/ArrayRealVector.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/ArrayRealVector.java?rev=1360662&r1=1360661&r2=1360662&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/ArrayRealVector.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/ArrayRealVector.java Thu Jul 12 13:17:08 2012
@@ -455,16 +455,8 @@ public class ArrayRealVector extends Rea
dot += data[i] * vData[i];
}
return dot;
- } else {
- checkVectorDimensions(v);
- double dot = 0;
- Iterator<Entry> it = v.sparseIterator();
- while (it.hasNext()) {
- final Entry e = it.next();
- dot += data[e.getIndex()] * e.getValue();
- }
- return dot;
}
+ return super.dotProduct(v);
}
/** {@inheritDoc} */
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/OpenMapRealVector.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/OpenMapRealVector.java?rev=1360662&r1=1360661&r2=1360662&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/OpenMapRealVector.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/OpenMapRealVector.java Thu Jul 12 13:17:08 2012
@@ -304,38 +304,6 @@ public class OpenMapRealVector extends S
return new OpenMapRealVector(this);
}
- /**
- * Optimized method to compute the dot product with an OpenMapRealVector.
- * It iterates over the smallest of the two.
- *
- * @param v Cector to compute the dot product with.
- * @return the dot product of {@code this} and {@code v}.
- * @throws org.apache.commons.math3.exception.DimensionMismatchException
- * if the dimensions do not match.
- */
- public double dotProduct(OpenMapRealVector v) {
- checkVectorDimensions(v.getDimension());
- boolean thisIsSmaller = entries.size() < v.entries.size();
- Iterator iter = thisIsSmaller ? entries.iterator() : v.entries.iterator();
- OpenIntToDoubleHashMap larger = thisIsSmaller ? v.entries : entries;
- double d = 0;
- while(iter.hasNext()) {
- iter.advance();
- d += iter.value() * larger.get(iter.key());
- }
- return d;
- }
-
- /** {@inheritDoc} */
- @Override
- public double dotProduct(RealVector v) {
- if(v instanceof OpenMapRealVector) {
- return dotProduct((OpenMapRealVector)v);
- } else {
- return super.dotProduct(v);
- }
- }
-
/** {@inheritDoc} */
@Override
public OpenMapRealVector ebeDivide(RealVector v) {
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java?rev=1360662&r1=1360661&r2=1360662&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java Thu Jul 12 13:17:08 2012
@@ -303,10 +303,9 @@ public abstract class RealVector {
public double dotProduct(RealVector v) {
checkVectorDimensions(v);
double d = 0;
- Iterator<Entry> it = sparseIterator();
- while (it.hasNext()) {
- final Entry e = it.next();
- d += e.getValue() * v.getEntry(e.getIndex());
+ final int n = getDimension();
+ for (int i = 0; i < n; i++) {
+ d += getEntry(i) * v.getEntry(i);
}
return d;
}