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};