You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by ro...@apache.org on 2010/03/03 14:36:03 UTC
svn commit: r918468 - in /lucene/mahout/trunk/math/src:
main/java/org/apache/mahout/math/ main/java/org/apache/mahout/math/function/
test/java/org/apache/mahout/math/
Author: robinanil
Date: Wed Mar 3 13:36:02 2010
New Revision: 918468
URL: http://svn.apache.org/viewvc?rev=918468&view=rev
Log:
Some improvements in DenseVector and DenseMatrix and cleanup
Modified:
lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseMatrix.java
lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java
lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/OrderedIntDoubleMapping.java
lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/function/Functions.java
lucene/mahout/trunk/math/src/test/java/org/apache/mahout/math/TestDenseVector.java
Modified: lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseMatrix.java?rev=918468&r1=918467&r2=918468&view=diff
==============================================================================
--- lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseMatrix.java (original)
+++ lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseMatrix.java Wed Mar 3 13:36:02 2010
@@ -17,28 +17,30 @@
package org.apache.mahout.math;
+import java.util.Arrays;
/** Matrix of doubles implemented using a 2-d array */
public class DenseMatrix extends AbstractMatrix {
-
+
protected double[][] values;
-
+
public DenseMatrix() {
super();
}
-
+
protected int columnSize() {
return values[0].length;
}
-
+
protected int rowSize() {
return values.length;
}
-
+
/**
* Construct a matrix from the given values
- *
- * @param values a double[][]
+ *
+ * @param values
+ * a double[][]
*/
public DenseMatrix(double[][] values) {
// clone the rows
@@ -48,19 +50,19 @@
this.values[i] = values[i].clone();
}
}
-
+
/** Construct an empty matrix of the given size */
public DenseMatrix(int rows, int columns) {
this.values = new double[rows][columns];
}
-
+
public int[] size() {
int[] result = new int[2];
result[ROW] = rowSize();
result[COL] = columnSize();
return result;
}
-
+
@Override
public Matrix clone() {
DenseMatrix clone = (DenseMatrix) super.clone();
@@ -70,38 +72,46 @@
}
return clone;
}
-
+
public double getQuick(int row, int column) {
return values[row][column];
}
-
+
public Matrix like() {
return like(rowSize(), columnSize());
}
-
+
public Matrix like(int rows, int columns) {
return new DenseMatrix(rows, columns);
}
-
+
public void setQuick(int row, int column, double value) {
values[row][column] = value;
}
-
+
public int[] getNumNondefaultElements() {
return size();
}
-
+
public Matrix viewPart(int[] offset, int[] size) {
if (size[ROW] > rowSize() || size[COL] > columnSize()) {
throw new CardinalityException();
}
- if (offset[ROW] < 0 || offset[ROW] + size[ROW] > rowSize()
- || offset[COL] < 0 || offset[COL] + size[COL] > columnSize()) {
+ if (offset[ROW] < 0 || offset[ROW] + size[ROW] > rowSize() || offset[COL] < 0
+ || offset[COL] + size[COL] > columnSize()) {
throw new IndexException();
}
return new MatrixView(this, offset, size);
}
-
+
+ @Override
+ public Matrix assign(double value) {
+ for (int row = 0; row < rowSize(); row++) {
+ Arrays.fill(values[row], value);
+ }
+ return this;
+ }
+
public Matrix assignColumn(int column, Vector other) {
if (other.size() != rowSize() || column >= columnSize()) {
throw new CardinalityException();
@@ -111,7 +121,7 @@
}
return this;
}
-
+
public Matrix assignRow(int row, Vector other) {
if (row >= rowSize() || other.size() != columnSize()) {
throw new CardinalityException();
@@ -121,14 +131,14 @@
}
return this;
}
-
+
public Vector getColumn(int column) {
if (column < 0 || column >= columnSize()) {
throw new IndexException();
}
return new TransposeViewVector(this, column);
}
-
+
public Vector getRow(int row) {
if (row < 0 || row >= rowSize()) {
throw new IndexException();
Modified: lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java?rev=918468&r1=918467&r2=918468&view=diff
==============================================================================
--- lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java (original)
+++ lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java Wed Mar 3 13:36:02 2010
@@ -315,6 +315,24 @@
}
}
+ public void addAll(Vector v) {
+ if (v.size() != size()) {
+ throw new CardinalityException();
+ }
+
+ Iterator<org.apache.mahout.math.Vector.Element> iter = v.iterateNonZero();
+ while (iter.hasNext()) {
+ org.apache.mahout.math.Vector.Element element = iter.next();
+ values[element.index()] += element.get();
+ }
+ }
+
+ @Override
+ public Vector assign(double value) {
+ Arrays.fill(values, value);
+ return this;
+ }
+
@Override
public double dot(Vector x) {
if (size() != x.size()) {
Modified: lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/OrderedIntDoubleMapping.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/OrderedIntDoubleMapping.java?rev=918468&r1=918467&r2=918468&view=diff
==============================================================================
--- lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/OrderedIntDoubleMapping.java (original)
+++ lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/OrderedIntDoubleMapping.java Wed Mar 3 13:36:02 2010
@@ -55,7 +55,7 @@
int getNumMappings() {
return numMappings;
}
-
+
private void growTo(int newCapacity) {
if (newCapacity > indices.length) {
int[] newIndices = new int[newCapacity];
Modified: lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/function/Functions.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/function/Functions.java?rev=918468&r1=918467&r2=918468&view=diff
==============================================================================
--- lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/function/Functions.java (original)
+++ lucene/mahout/trunk/math/src/main/java/org/apache/mahout/math/function/Functions.java Wed Mar 3 13:36:02 2010
@@ -380,14 +380,14 @@
return a * b;
}
};
-
+
/** Function that returns <tt>a + b</tt>. */
- public static final BinaryFunction plus = plusMult(1);
- /*
- new BinaryFunction() {
- public final double apply(double a, double b) { return a + b; }
+ public static final BinaryFunction plus = new BinaryFunction() {
+
+ public final double apply(double a, double b) {
+ return a + b;
+ }
};
- */
/** Function that returns <tt>Math.abs(a) + Math.abs(b)</tt>. */
public static final BinaryFunction plusAbs = new BinaryFunction() {
Modified: lucene/mahout/trunk/math/src/test/java/org/apache/mahout/math/TestDenseVector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/math/src/test/java/org/apache/mahout/math/TestDenseVector.java?rev=918468&r1=918467&r2=918468&view=diff
==============================================================================
--- lucene/mahout/trunk/math/src/test/java/org/apache/mahout/math/TestDenseVector.java (original)
+++ lucene/mahout/trunk/math/src/test/java/org/apache/mahout/math/TestDenseVector.java Wed Mar 3 13:36:02 2010
@@ -17,14 +17,15 @@
package org.apache.mahout.math;
-import junit.framework.TestCase;
-
-import static org.apache.mahout.math.function.Functions.*;
+import static org.apache.mahout.math.function.Functions.mult;
+import static org.apache.mahout.math.function.Functions.plus;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import junit.framework.TestCase;
+
public class TestDenseVector extends TestCase {
final double[] values = {1.1, 2.2, 3.3};