You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hama.apache.org by ed...@apache.org on 2008/10/17 06:00:19 UTC
svn commit: r705456 - in /incubator/hama/trunk: CHANGES.txt
src/java/org/apache/hama/AbstractVector.java
src/java/org/apache/hama/DenseVector.java
src/test/org/apache/hama/TestDenseVector.java
Author: edwardyoon
Date: Thu Oct 16 21:00:19 2008
New Revision: 705456
URL: http://svn.apache.org/viewvc?rev=705456&view=rev
Log:
Implement Vector.add() method
Modified:
incubator/hama/trunk/CHANGES.txt
incubator/hama/trunk/src/java/org/apache/hama/AbstractVector.java
incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java
incubator/hama/trunk/src/test/org/apache/hama/TestDenseVector.java
Modified: incubator/hama/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/CHANGES.txt?rev=705456&r1=705455&r2=705456&view=diff
==============================================================================
--- incubator/hama/trunk/CHANGES.txt (original)
+++ incubator/hama/trunk/CHANGES.txt Thu Oct 16 21:00:19 2008
@@ -27,6 +27,7 @@
IMPROVEMENTS
+ HAMA-28: Implement Vector.add() method (edwardyoon)
HAMA-78: Separate Interface and Implementation for HamaAdmin (edwardyoon)
HAMA-76: Remove load() since it duplicated with constructor (edwardyoon)
HAMA-74: set the number of map/reduce task on the shell (samuel)
Modified: incubator/hama/trunk/src/java/org/apache/hama/AbstractVector.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/AbstractVector.java?rev=705456&r1=705455&r2=705456&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/AbstractVector.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/AbstractVector.java Thu Oct 16 21:00:19 2008
@@ -27,12 +27,16 @@
public abstract class AbstractVector {
public VectorMapWritable<Integer, VectorEntry> entries;
- public double get(int index) {
+ public double get(int index) throws NullPointerException {
return this.entries.get(index).getValue();
}
+ public void set(int index, double value) {
+ entries.put(index, new VectorEntry(value));
+ }
+
public void add(int index, double value) {
- // TODO Auto-generated method stub
+ set(index, get(index) + value);
}
/**
Modified: incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java?rev=705456&r1=705455&r2=705456&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java Thu Oct 16 21:00:19 2008
@@ -28,7 +28,7 @@
public class DenseVector extends AbstractVector implements Vector {
static final Logger LOG = Logger.getLogger(DenseVector.class);
-
+
public DenseVector() {
this(new VectorMapWritable<Integer, VectorEntry>());
}
@@ -38,8 +38,13 @@
}
public Vector add(double alpha, Vector v) {
- // TODO Auto-generated method stub
- return null;
+ if (alpha == 0)
+ return this;
+
+ for (int i = 0; i < this.size(); i++) {
+ set(i, get(i) + alpha * v.get(i));
+ }
+ return this;
}
public Vector add(Vector v2) {
@@ -97,10 +102,6 @@
return getNormInf();
}
- public void set(int index, double value) {
- entries.put(index, new VectorEntry(value));
- }
-
public DenseVector set(Vector v) {
return new DenseVector(((DenseVector) v).getEntries());
}
@@ -125,7 +126,7 @@
Iterator<Integer> it = keySet.iterator();
while (it.hasNext()) {
- double value = get(it.next()); //this.get(it.next()).getValue();
+ double value = get(it.next()); // this.get(it.next()).getValue();
square_sum += value * value;
}
@@ -144,10 +145,10 @@
public Vector subVector(int i0, int i1) {
Vector res = new DenseVector();
- for(int i = i0; i <= i1; i++ ) {
+ for (int i = i0; i <= i1; i++) {
res.set(i, get(i));
}
-
+
return res;
}
}
Modified: incubator/hama/trunk/src/test/org/apache/hama/TestDenseVector.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/test/org/apache/hama/TestDenseVector.java?rev=705456&r1=705455&r2=705456&view=diff
==============================================================================
--- incubator/hama/trunk/src/test/org/apache/hama/TestDenseVector.java (original)
+++ incubator/hama/trunk/src/test/org/apache/hama/TestDenseVector.java Thu Oct 16 21:00:19 2008
@@ -32,6 +32,7 @@
public class TestDenseVector extends TestCase {
final static Log LOG = LogFactory.getLog(TestDenseVector.class.getName());
+
private static final double cosine = 0.6978227007909176;
private static final double norm1 = 12.0;
private static final double norm2 = 6.782329983125268;
@@ -118,15 +119,29 @@
}
/**
- * Test iterator
+ * Test add()
*/
- public void testIterator() {
+ public void testAdd() {
+ v1.add(v2);
int i = 0;
Iterator<VectorEntry> it = v1.iterator();
while (it.hasNext()) {
VectorEntry c = it.next();
- assertEquals(c.getValue(), values[0][i]);
+ assertEquals(c.getValue(), values[0][i] + values[1][i]);
i++;
}
+
+ v1.add(0.5, v2);
+ int j = 0;
+ Iterator<VectorEntry> itt = v1.iterator();
+ while (itt.hasNext()) {
+ VectorEntry c = itt.next();
+ assertEquals(c.getValue(), (values[0][j] + values[1][j]) + (0.5 * values[1][j]));
+ j++;
+ }
+
+ double old = v1.get(0);
+ v1.add(0, norm1);
+ assertEquals(v1.get(0), old + norm1);
}
}