You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2009/11/25 04:41:31 UTC

svn commit: r883974 [5/20] - in /lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix: ./ bench/ doublealgo/ impl/ linalg/ objectalgo/

Modified: lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/BenchmarkMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/BenchmarkMatrix.java?rev=883974&r1=883973&r2=883974&view=diff
==============================================================================
--- lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/BenchmarkMatrix.java (original)
+++ lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/BenchmarkMatrix.java Wed Nov 25 03:41:28 2009
@@ -37,863 +37,863 @@
  * Not yet documented.
  */
 protected static void bench_dgemm(String[] args) {
-	String[] types;
-	int cpus;
-	double minSecs;
-	boolean transposeA;
-	boolean transposeB;
-	double[] densities;
-	int[] sizes;
-	
-	try { // parse
-		int k = 1;
-		types = new String[] {args[k++]};
-		cpus = Integer.parseInt(args[k++]);
-		minSecs = new Double(args[k++]).doubleValue();
-		densities = new double[] {new Double(args[k++]).doubleValue()};
-		transposeA = new Boolean(args[k++]).booleanValue();
-		transposeB = new Boolean(args[k++]).booleanValue();
-		
-		sizes = new int[args.length - k];
-		for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
-	}
-	catch (Exception exc) {
-		System.out.println(usage(args[0]));
-		System.out.println("Ignoring command...\n");
-		return;
-	}
-
-	org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
-	Double2DProcedure fun = fun_dgemm(transposeA,transposeB);
-	String title = fun.toString();
-	String params = transposeA +", "+transposeB+", 1, A, B, 0, C";
-	title = title + " dgemm("+params+")";
-	run(minSecs,title,fun,types,sizes,densities);
+  String[] types;
+  int cpus;
+  double minSecs;
+  boolean transposeA;
+  boolean transposeB;
+  double[] densities;
+  int[] sizes;
+  
+  try { // parse
+    int k = 1;
+    types = new String[] {args[k++]};
+    cpus = Integer.parseInt(args[k++]);
+    minSecs = new Double(args[k++]).doubleValue();
+    densities = new double[] {new Double(args[k++]).doubleValue()};
+    transposeA = new Boolean(args[k++]).booleanValue();
+    transposeB = new Boolean(args[k++]).booleanValue();
+    
+    sizes = new int[args.length - k];
+    for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
+  }
+  catch (Exception exc) {
+    System.out.println(usage(args[0]));
+    System.out.println("Ignoring command...\n");
+    return;
+  }
+
+  org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
+  Double2DProcedure fun = fun_dgemm(transposeA,transposeB);
+  String title = fun.toString();
+  String params = transposeA +", "+transposeB+", 1, A, B, 0, C";
+  title = title + " dgemm("+params+")";
+  run(minSecs,title,fun,types,sizes,densities);
 }
 /**
  * Not yet documented.
  */
 protected static void bench_dgemv(String[] args) {
-	String[] types;
-	int cpus;
-	double minSecs;
-	boolean transposeA;
-	double[] densities;
-	int[] sizes;
-	
-	try { // parse
-		int k = 1;
-		types = new String[] {args[k++]};
-		cpus = Integer.parseInt(args[k++]);
-		minSecs = new Double(args[k++]).doubleValue();
-		densities = new double[] {new Double(args[k++]).doubleValue()};
-		transposeA = new Boolean(args[k++]).booleanValue();
-		
-		sizes = new int[args.length - k];
-		for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
-	}
-	catch (Exception exc) {
-		System.out.println(usage(args[0]));
-		System.out.println("Ignoring command...\n");
-		return;
-	}
-
-	org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
-	Double2DProcedure fun = fun_dgemv(transposeA);
-	String title = fun.toString();
-	String params = transposeA +", 1, A, B, 0, C";
-	title = title + " dgemv("+params+")";
-	run(minSecs,title,fun,types,sizes,densities);
+  String[] types;
+  int cpus;
+  double minSecs;
+  boolean transposeA;
+  double[] densities;
+  int[] sizes;
+  
+  try { // parse
+    int k = 1;
+    types = new String[] {args[k++]};
+    cpus = Integer.parseInt(args[k++]);
+    minSecs = new Double(args[k++]).doubleValue();
+    densities = new double[] {new Double(args[k++]).doubleValue()};
+    transposeA = new Boolean(args[k++]).booleanValue();
+    
+    sizes = new int[args.length - k];
+    for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
+  }
+  catch (Exception exc) {
+    System.out.println(usage(args[0]));
+    System.out.println("Ignoring command...\n");
+    return;
+  }
+
+  org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
+  Double2DProcedure fun = fun_dgemv(transposeA);
+  String title = fun.toString();
+  String params = transposeA +", 1, A, B, 0, C";
+  title = title + " dgemv("+params+")";
+  run(minSecs,title,fun,types,sizes,densities);
 }
 /**
  * Not yet documented.
  */
 protected static void bench_pow(String[] args) {
-	String[] types;
-	int cpus;
-	double minSecs;
-	double[] densities;
-	int exponent;
-	int[] sizes;
-	
-	try { // parse
-		int k = 1;
-		types = new String[] {args[k++]};
-		cpus = Integer.parseInt(args[k++]);
-		minSecs = new Double(args[k++]).doubleValue();
-		densities = new double[] {new Double(args[k++]).doubleValue()};
-		exponent = Integer.parseInt(args[k++]);
-		
-		sizes = new int[args.length - k];
-		for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
-	}
-	catch (Exception exc) {
-		System.out.println(usage(args[0]));
-		System.out.println("Ignoring command...\n");
-		return;
-	}
-
-	org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
-	Double2DProcedure fun = fun_pow(exponent);
-	String title = fun.toString();
-	String params = "A,"+exponent;
-	title = title +" pow("+params+")";
-	run(minSecs,title,fun,types,sizes,densities);
+  String[] types;
+  int cpus;
+  double minSecs;
+  double[] densities;
+  int exponent;
+  int[] sizes;
+  
+  try { // parse
+    int k = 1;
+    types = new String[] {args[k++]};
+    cpus = Integer.parseInt(args[k++]);
+    minSecs = new Double(args[k++]).doubleValue();
+    densities = new double[] {new Double(args[k++]).doubleValue()};
+    exponent = Integer.parseInt(args[k++]);
+    
+    sizes = new int[args.length - k];
+    for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
+  }
+  catch (Exception exc) {
+    System.out.println(usage(args[0]));
+    System.out.println("Ignoring command...\n");
+    return;
+  }
+
+  org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
+  Double2DProcedure fun = fun_pow(exponent);
+  String title = fun.toString();
+  String params = "A,"+exponent;
+  title = title +" pow("+params+")";
+  run(minSecs,title,fun,types,sizes,densities);
 }
 /**
  * Not yet documented.
  */
 protected static void benchGeneric(Double2DProcedure fun, String[] args) {
-	String[] types;
-	int cpus;
-	double minSecs;
-	double[] densities;
-	int[] sizes;
-	
-	try { // parse
-		int k = 1;
-		types = new String[] {args[k++]};
-		cpus = Integer.parseInt(args[k++]);
-		minSecs = new Double(args[k++]).doubleValue();
-		densities = new double[] {new Double(args[k++]).doubleValue()};
-		
-		sizes = new int[args.length - k];
-		for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
-	}
-	catch (Exception exc) {
-		System.out.println(usage(args[0]));
-		System.out.println("Ignoring command...\n");
-		return;
-	}
-
-	org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
-	String title = fun.toString();
-	run(minSecs,title,fun,types,sizes,densities);
+  String[] types;
+  int cpus;
+  double minSecs;
+  double[] densities;
+  int[] sizes;
+  
+  try { // parse
+    int k = 1;
+    types = new String[] {args[k++]};
+    cpus = Integer.parseInt(args[k++]);
+    minSecs = new Double(args[k++]).doubleValue();
+    densities = new double[] {new Double(args[k++]).doubleValue()};
+    
+    sizes = new int[args.length - k];
+    for (int i=0; k<args.length; k++, i++) sizes[i] = Integer.parseInt(args[k]);
+  }
+  catch (Exception exc) {
+    System.out.println(usage(args[0]));
+    System.out.println("Ignoring command...\n");
+    return;
+  }
+
+  org.apache.mahout.matrix.matrix.linalg.SmpBlas.allocateBlas(cpus, org.apache.mahout.matrix.matrix.linalg.SeqBlas.seqBlas);
+  String title = fun.toString();
+  run(minSecs,title,fun,types,sizes,densities);
 }
 /**
  * 
  */
 protected static String commands() {
-	return "dgemm, dgemv, pow, assign, assignGetSet, assignGetSetQuick, assignLog, assignPlusMult, elementwiseMult, elementwiseMultB, SOR5, SOR8, LUDecompose, LUSolve";
+  return "dgemm, dgemv, pow, assign, assignGetSet, assignGetSetQuick, assignLog, assignPlusMult, elementwiseMult, elementwiseMultB, SOR5, SOR8, LUDecompose, LUSolve";
 }
 /**
  * Linear algebrax matrix-matrix multiply.
  */
 protected static Double2DProcedure fun_dgemm(final boolean transposeA, final boolean transposeB) {
-	return new Double2DProcedure() {
-		public String toString() { return "Blas matrix-matrix mult";	}
-		public void setParameters(DoubleMatrix2D G, DoubleMatrix2D H) {
-			super.setParameters(G,H);
-			D = new org.apache.mahout.matrix.matrix.impl.DenseDoubleMatrix2D(A.rows(),A.columns()).assign(0.5);
-			C = D.copy();
-			B = D.copy();
-		}
-		public void init() { C.assign(D); }
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.dgemm(transposeA,transposeB,1,A,B,0,C);
-		}
-		public double operations() { // Mflops
-			double m = A.rows();
-			double n = A.columns();
-			double p = B.columns();
-			return 2.0*m*n*p / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() {
+    public String toString() { return "Blas matrix-matrix mult";  }
+    public void setParameters(DoubleMatrix2D G, DoubleMatrix2D H) {
+      super.setParameters(G,H);
+      D = new org.apache.mahout.matrix.matrix.impl.DenseDoubleMatrix2D(A.rows(),A.columns()).assign(0.5);
+      C = D.copy();
+      B = D.copy();
+    }
+    public void init() { C.assign(D); }
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.dgemm(transposeA,transposeB,1,A,B,0,C);
+    }
+    public double operations() { // Mflops
+      double m = A.rows();
+      double n = A.columns();
+      double p = B.columns();
+      return 2.0*m*n*p / 1.0E6; 
+    }
+  };
 }
 /**
  * Linear algebrax matrix-matrix multiply.
  */
 protected static Double2DProcedure fun_dgemv(final boolean transposeA) {
-	return new Double2DProcedure() { 
-		public String toString() { return "Blas matrix-vector mult";	}
-		public void setParameters(DoubleMatrix2D G, DoubleMatrix2D H) {
-			super.setParameters(G,H);
-			D = new org.apache.mahout.matrix.matrix.impl.DenseDoubleMatrix2D(A.rows(),A.columns()).assign(0.5);
-			C = D.copy();
-			B = D.copy();
-		}
-		public void init() { C.viewRow(0).assign(D.viewRow(0)); }
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.dgemv(transposeA,1,A,B.viewRow(0),0,C.viewRow(0));
-		}
-		public double operations() { // Mflops
-			double m = A.rows();
-			double n = A.columns();
-			//double p = B.columns();
-			return 2.0*m*n / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "Blas matrix-vector mult";  }
+    public void setParameters(DoubleMatrix2D G, DoubleMatrix2D H) {
+      super.setParameters(G,H);
+      D = new org.apache.mahout.matrix.matrix.impl.DenseDoubleMatrix2D(A.rows(),A.columns()).assign(0.5);
+      C = D.copy();
+      B = D.copy();
+    }
+    public void init() { C.viewRow(0).assign(D.viewRow(0)); }
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.dgemv(transposeA,1,A,B.viewRow(0),0,C.viewRow(0));
+    }
+    public double operations() { // Mflops
+      double m = A.rows();
+      double n = A.columns();
+      //double p = B.columns();
+      return 2.0*m*n / 1.0E6; 
+    }
+  };
 }
 /**
  * 2D assign with get,set
  */
 protected static Double2DProcedure fun_pow(final int k) {
-	return new Double2DProcedure() {
-		public double dummy;
-		public String toString() { return "matrix to the power of an exponent";	}
-		public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
-			if (k<0) { // must be nonsingular for inversion
-				if (!org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByRow(A) ||
-					!org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByColumn(A)) {
-						org.apache.mahout.matrix.matrix.linalg.Property.ZERO.generateNonSingular(A);
-					}
-				super.setParameters(A,B);
-			}
-		}
-
-		public void init() {}		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.Algebra.DEFAULT.pow(A,k);
-		}
-		public double operations() { // Mflops
-			double m = A.rows();
-			if (k==0) return m; // identity
-			double mflops = 0;
-			if (k<0) {
-				// LU.decompose
-				double N = Math.min(A.rows(),A.columns());
-				mflops += (2.0 * N*N*N / 3.0 / 1.0E6);
-
-				// LU.solve
-				double n = A.columns();
-				double nx = B.columns();
-				mflops += (2.0 * nx*(n*n + n) / 1.0E6); 
-			}
-			// mult
-			mflops += 2.0*(Math.abs(k)-1)*m*m*m / 1.0E6;
-			return mflops; 
-		}
-	};
+  return new Double2DProcedure() {
+    public double dummy;
+    public String toString() { return "matrix to the power of an exponent";  }
+    public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
+      if (k<0) { // must be nonsingular for inversion
+        if (!org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByRow(A) ||
+          !org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByColumn(A)) {
+            org.apache.mahout.matrix.matrix.linalg.Property.ZERO.generateNonSingular(A);
+          }
+        super.setParameters(A,B);
+      }
+    }
+
+    public void init() {}    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.Algebra.DEFAULT.pow(A,k);
+    }
+    public double operations() { // Mflops
+      double m = A.rows();
+      if (k==0) return m; // identity
+      double mflops = 0;
+      if (k<0) {
+        // LU.decompose
+        double N = Math.min(A.rows(),A.columns());
+        mflops += (2.0 * N*N*N / 3.0 / 1.0E6);
+
+        // LU.solve
+        double n = A.columns();
+        double nx = B.columns();
+        mflops += (2.0 * nx*(n*n + n) / 1.0E6); 
+      }
+      // mult
+      mflops += 2.0*(Math.abs(k)-1)*m*m*m / 1.0E6;
+      return mflops; 
+    }
+  };
 }
 /**
  * 2D assign with A.assign(B)
  */
 protected static Double2DProcedure funAssign() {
-	return new Double2DProcedure() {
-		public String toString() { return "A.assign(B) [Mops/sec]";	}
-		public void init() { A.assign(0); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			A.assign(B);
-		}
-	};
+  return new Double2DProcedure() {
+    public String toString() { return "A.assign(B) [Mops/sec]";  }
+    public void init() { A.assign(0); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      A.assign(B);
+    }
+  };
 }
 /**
  * 2D assign with get,set
  */
 protected static Double2DProcedure funAssignGetSet() {
-	return new Double2DProcedure() { 
-		public String toString() { return "A.assign(B) via get and set [Mops/sec]";	}
-		public void init() { A.assign(0); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			int rows=B.rows();
-			int columns=B.columns();
-			/*
-			for (int row=rows; --row >= 0; ) {
-				for (int column=columns; --column >= 0; ) {
-					A.set(row,column, B.get(row,column));
-				}
-			}
-			*/
-			for (int row=0; row < rows; row++) {
-				for (int column=0; column < columns; column++) {
-					A.set(row,column, B.get(row,column));
-				}
-			}
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "A.assign(B) via get and set [Mops/sec]";  }
+    public void init() { A.assign(0); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      int rows=B.rows();
+      int columns=B.columns();
+      /*
+      for (int row=rows; --row >= 0; ) {
+        for (int column=columns; --column >= 0; ) {
+          A.set(row,column, B.get(row,column));
+        }
+      }
+      */
+      for (int row=0; row < rows; row++) {
+        for (int column=0; column < columns; column++) {
+          A.set(row,column, B.get(row,column));
+        }
+      }
+    }
+  };
 }
 /**
  * 2D assign with getQuick,setQuick
  */
 protected static Double2DProcedure funAssignGetSetQuick() {
-	return new Double2DProcedure() { 
-		public String toString() { return "A.assign(B) via getQuick and setQuick [Mops/sec]";	}
-		public void init() { A.assign(0); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			int rows=B.rows();
-			int columns=B.columns();
-			//for (int row=rows; --row >= 0; ) {
-			//	for (int column=columns; --column >= 0; ) {
-			for (int row=0; row < rows; row++) {
-				for (int column=0; column < columns; column++) {
-					A.setQuick(row,column, B.getQuick(row,column));
-				}
-			}
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "A.assign(B) via getQuick and setQuick [Mops/sec]";  }
+    public void init() { A.assign(0); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      int rows=B.rows();
+      int columns=B.columns();
+      //for (int row=rows; --row >= 0; ) {
+      //  for (int column=columns; --column >= 0; ) {
+      for (int row=0; row < rows; row++) {
+        for (int column=0; column < columns; column++) {
+          A.setQuick(row,column, B.getQuick(row,column));
+        }
+      }
+    }
+  };
 }
 /**
  * 2D assign with A.assign(B)
  */
 protected static Double2DProcedure funAssignLog() {
-	return new Double2DProcedure() { 
-		public String toString() { return "A[i,j] = log(A[i,j]) via Blas.assign(fun) [Mflops/sec]";	}
-		public void init() { A.assign(C); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A, org.apache.mahout.jet.math.Functions.log);
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "A[i,j] = log(A[i,j]) via Blas.assign(fun) [Mflops/sec]";  }
+    public void init() { A.assign(C); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A, org.apache.mahout.jet.math.Functions.log);
+    }
+  };
 }
 /**
  * 2D assign with A.assign(B)
  */
 protected static Double2DProcedure funAssignPlusMult() {
-	return new Double2DProcedure() { 
-		public String toString() { return "A[i,j] = A[i,j] + s*B[i,j] via Blas.assign(fun) [Mflops/sec]";	}
-		public void init() { A.assign(C); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A,B, org.apache.mahout.jet.math.Functions.plusMult(0.5));
-		}
-		public double operations() { // Mflops
-			double m = A.rows();
-			double n = A.columns();
-			return 2*m*n / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "A[i,j] = A[i,j] + s*B[i,j] via Blas.assign(fun) [Mflops/sec]";  }
+    public void init() { A.assign(C); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A,B, org.apache.mahout.jet.math.Functions.plusMult(0.5));
+    }
+    public double operations() { // Mflops
+      double m = A.rows();
+      double n = A.columns();
+      return 2*m*n / 1.0E6; 
+    }
+  };
 }
 /**
  * Linear algebrax matrix-matrix multiply.
  */
 protected static Double2DProcedure funCorrelation() {
-	return new Double2DProcedure() { 
-		public String toString() { return "xxxxxxx";	}
-		public void init() {  }		
-		public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
-			super.setParameters(A.viewDice(),B); // transposed --> faster (memory aware) iteration in correlation algo
-		}
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.doublealgo.Statistic.correlation(
-				org.apache.mahout.matrix.matrix.doublealgo.Statistic.covariance(A));
-		}
-		public double operations() { // Mflops
-			double m = A.rows();
-			double n = A.columns();
-			return m*(n*n + n) / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "xxxxxxx";  }
+    public void init() {  }    
+    public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
+      super.setParameters(A.viewDice(),B); // transposed --> faster (memory aware) iteration in correlation algo
+    }
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.doublealgo.Statistic.correlation(
+        org.apache.mahout.matrix.matrix.doublealgo.Statistic.covariance(A));
+    }
+    public double operations() { // Mflops
+      double m = A.rows();
+      double n = A.columns();
+      return m*(n*n + n) / 1.0E6; 
+    }
+  };
 }
 /**
  * Element-by-element matrix-matrix multiply.
  */
 protected static Double2DProcedure funElementwiseMult() {
-	return new Double2DProcedure() { 
-		public String toString() { return "A.assign(F.mult(0.5)) via Blas [Mflops/sec]";	}
-		public void init() { A.assign(C); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A, org.apache.mahout.jet.math.Functions.mult(0.5));
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "A.assign(F.mult(0.5)) via Blas [Mflops/sec]";  }
+    public void init() { A.assign(C); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A, org.apache.mahout.jet.math.Functions.mult(0.5));
+    }
+  };
 }
 /**
  * Element-by-element matrix-matrix multiply.
  */
 protected static Double2DProcedure funElementwiseMultB() {
-	return new Double2DProcedure() { 
-		public String toString() { return "A.assign(B,F.mult) via Blas [Mflops/sec]";	}
-		public void init() { A.assign(C); }		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A,B, org.apache.mahout.jet.math.Functions.mult);
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "A.assign(B,F.mult) via Blas [Mflops/sec]";  }
+    public void init() { A.assign(C); }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      org.apache.mahout.matrix.matrix.linalg.SmpBlas.smpBlas.assign(A,B, org.apache.mahout.jet.math.Functions.mult);
+    }
+  };
 }
 /**
  * 2D assign with get,set
  */
 protected static Double2DProcedure funGetQuick() {
-	return new Double2DProcedure() {
-		public double dummy;
-		public String toString() { return "xxxxxxx";	}
-		public void init() {}		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			int rows=B.rows();
-			int columns=B.columns();
-			double sum =0;
-			//for (int row=rows; --row >= 0; ) {
-			//	for (int column=columns; --column >= 0; ) {
-			for (int row=0; row < rows; row++) {
-				for (int column=0; column < columns; column++) {
-					sum += A.getQuick(row,column);
-				}
-			}
-			dummy = sum;
-		}
-	};
+  return new Double2DProcedure() {
+    public double dummy;
+    public String toString() { return "xxxxxxx";  }
+    public void init() {}    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      int rows=B.rows();
+      int columns=B.columns();
+      double sum =0;
+      //for (int row=rows; --row >= 0; ) {
+      //  for (int column=columns; --column >= 0; ) {
+      for (int row=0; row < rows; row++) {
+        for (int column=0; column < columns; column++) {
+          sum += A.getQuick(row,column);
+        }
+      }
+      dummy = sum;
+    }
+  };
 }
 /**
  * 2D assign with getQuick,setQuick
  */
 protected static Double2DProcedure funLUDecompose() {
-	return new Double2DProcedure() {
-		org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick lu = new org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick(0);
-		public String toString() { return "LU.decompose(A) [Mflops/sec]";	}
-		public void init() { A.assign(C); }
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			lu.decompose(A);	
-		}
-		public double operations() { // Mflops
-			double N = Math.min(A.rows(),A.columns());
-			return (2.0 * N*N*N / 3.0 / 1.0E6); 
-		}
-	};
+  return new Double2DProcedure() {
+    org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick lu = new org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick(0);
+    public String toString() { return "LU.decompose(A) [Mflops/sec]";  }
+    public void init() { A.assign(C); }
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      lu.decompose(A);  
+    }
+    public double operations() { // Mflops
+      double N = Math.min(A.rows(),A.columns());
+      return (2.0 * N*N*N / 3.0 / 1.0E6); 
+    }
+  };
 }
 /**
  * 2D assign with getQuick,setQuick
  */
 protected static Double2DProcedure funLUSolve() {
-	return new Double2DProcedure() {
-		org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick lu;
-		public String toString() { return "LU.solve(A) [Mflops/sec]";	}
-		public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
-			lu = null;
-			if (!org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByRow(A) ||
-				!org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByColumn(A)) {
-					org.apache.mahout.matrix.matrix.linalg.Property.ZERO.generateNonSingular(A);
-				}
-			super.setParameters(A,B);
-			lu = new org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick(0);
-			lu.decompose(A);
-		}
-		public void init() { B.assign(D); }
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			lu.solve(B);	
-		}
-		public double operations() { // Mflops
-			double n = A.columns();
-			double nx = B.columns();
-			return (2.0 * nx*(n*n + n) / 1.0E6); 
-		}
-	};
+  return new Double2DProcedure() {
+    org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick lu;
+    public String toString() { return "LU.solve(A) [Mflops/sec]";  }
+    public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
+      lu = null;
+      if (!org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByRow(A) ||
+        !org.apache.mahout.matrix.matrix.linalg.Property.ZERO.isDiagonallyDominantByColumn(A)) {
+          org.apache.mahout.matrix.matrix.linalg.Property.ZERO.generateNonSingular(A);
+        }
+      super.setParameters(A,B);
+      lu = new org.apache.mahout.matrix.matrix.linalg.LUDecompositionQuick(0);
+      lu.decompose(A);
+    }
+    public void init() { B.assign(D); }
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      lu.solve(B);  
+    }
+    public double operations() { // Mflops
+      double n = A.columns();
+      double nx = B.columns();
+      return (2.0 * nx*(n*n + n) / 1.0E6); 
+    }
+  };
 }
 /**
  * Linear algebrax matrix-matrix multiply.
  */
 protected static Double2DProcedure funMatMultLarge() {
-	return new Double2DProcedure() {
-		public String toString() { return "xxxxxxx";	}
-		public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
-			// do not allocate mem for "D" --> safe some mem
-			this.A = A;
-			this.B = B;
-			this.C = A.copy();
-		}
-		public void init() { C.assign(0); }
-		public void apply(org.apache.mahout.matrix.Timer timer) { A.zMult(B,C); }
-		public double operations() { // Mflops
-			double m = A.rows();
-			double n = A.columns();
-			double p = B.columns();
-			return 2.0*m*n*p / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() {
+    public String toString() { return "xxxxxxx";  }
+    public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
+      // do not allocate mem for "D" --> safe some mem
+      this.A = A;
+      this.B = B;
+      this.C = A.copy();
+    }
+    public void init() { C.assign(0); }
+    public void apply(org.apache.mahout.matrix.Timer timer) { A.zMult(B,C); }
+    public double operations() { // Mflops
+      double m = A.rows();
+      double n = A.columns();
+      double p = B.columns();
+      return 2.0*m*n*p / 1.0E6; 
+    }
+  };
 }
 /**
  * Linear algebrax matrix-vector multiply.
  */
 protected static Double2DProcedure funMatVectorMult() {
-	return new Double2DProcedure() { 
-		public String toString() { return "xxxxxxx";	}
-		public void setParameters(DoubleMatrix2D G, DoubleMatrix2D H) {
-			super.setParameters(G,H);
-			D = new org.apache.mahout.matrix.matrix.impl.DenseDoubleMatrix2D(A.rows(),A.columns()).assign(0.5);
-			C = D.copy();
-			B = D.copy();
-		}
-		public void init() { C.viewRow(0).assign(D.viewRow(0)); }
-		public void apply(org.apache.mahout.matrix.Timer timer) { A.zMult(B.viewRow(0),C.viewRow(0)); }
-		public double operations() { // Mflops
-			double m = A.rows();
-			double n = A.columns();
-			//double p = B.columns();
-			return 2.0*m*n / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "xxxxxxx";  }
+    public void setParameters(DoubleMatrix2D G, DoubleMatrix2D H) {
+      super.setParameters(G,H);
+      D = new org.apache.mahout.matrix.matrix.impl.DenseDoubleMatrix2D(A.rows(),A.columns()).assign(0.5);
+      C = D.copy();
+      B = D.copy();
+    }
+    public void init() { C.viewRow(0).assign(D.viewRow(0)); }
+    public void apply(org.apache.mahout.matrix.Timer timer) { A.zMult(B.viewRow(0),C.viewRow(0)); }
+    public double operations() { // Mflops
+      double m = A.rows();
+      double n = A.columns();
+      //double p = B.columns();
+      return 2.0*m*n / 1.0E6; 
+    }
+  };
 }
 /**
  * 2D assign with get,set
  */
 protected static Double2DProcedure funSetQuick() {
-	return new Double2DProcedure() {
-		private int current;
-		private double density;
-		public String toString() { return "xxxxxxx";	}
-		public void init() { 
-			A.assign(0);
-			int seed = 123456;
-			current = 4*seed+1;
-			density = A.cardinality() / (double) A.size();
-		}		
-		public void apply(org.apache.mahout.matrix.Timer timer) {
-			int rows=B.rows();
-			int columns=B.columns();
-			//for (int row=rows; --row >= 0; ) {
-			//	for (int column=columns; --column >= 0; ) {
-			for (int row=0; row < rows; row++) {
-				for (int column=0; column < columns; column++) {
-					// a very fast random number generator (this is an inline version of class org.apache.mahout.jet.random.engine.DRand)
-					current *= 0x278DDE6D;
-					double random = (double) (current & 0xFFFFFFFFL) * 2.3283064365386963E-10;
-					// random uniform in (0.0,1.0)
-					if (random < density) 
-						A.setQuick(row,column,random);
-					else
-						A.setQuick(row,column,0);
-				}
-			}
-		}
-	};
+  return new Double2DProcedure() {
+    private int current;
+    private double density;
+    public String toString() { return "xxxxxxx";  }
+    public void init() { 
+      A.assign(0);
+      int seed = 123456;
+      current = 4*seed+1;
+      density = A.cardinality() / (double) A.size();
+    }    
+    public void apply(org.apache.mahout.matrix.Timer timer) {
+      int rows=B.rows();
+      int columns=B.columns();
+      //for (int row=rows; --row >= 0; ) {
+      //  for (int column=columns; --column >= 0; ) {
+      for (int row=0; row < rows; row++) {
+        for (int column=0; column < columns; column++) {
+          // a very fast random number generator (this is an inline version of class org.apache.mahout.jet.random.engine.DRand)
+          current *= 0x278DDE6D;
+          double random = (double) (current & 0xFFFFFFFFL) * 2.3283064365386963E-10;
+          // random uniform in (0.0,1.0)
+          if (random < density) 
+            A.setQuick(row,column,random);
+          else
+            A.setQuick(row,column,0);
+        }
+      }
+    }
+  };
 }
 /**
  * 
  */
 protected static Double2DProcedure funSOR5() {
-	return new Double2DProcedure() {
-		double value = 2; 
-		double omega = 1.25;
-		final double alpha = omega * 0.25;
-		final double beta = 1-omega;
-		org.apache.mahout.matrix.function.Double9Function function = new org.apache.mahout.matrix.function.Double9Function() {
-			public final double apply(	
-				double a00, double a01, double a02,
-				double a10, double a11, double a12,
-				double a20, double a21, double a22) {
-				return alpha*a11 + beta*(a01+a10+a12+a21);
-			}
-		};
-		public String toString() { return "A.zAssign8Neighbors(5 point function) [Mflops/sec]";	}
-		public void init() { B.assign(D); }
-		public void apply(org.apache.mahout.matrix.Timer timer) { A.zAssign8Neighbors(B,function); }
-		public double operations() { // Mflops
-			double n = A.columns();
-			double m = A.rows();
-			return 6.0 * m*n / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() {
+    double value = 2; 
+    double omega = 1.25;
+    final double alpha = omega * 0.25;
+    final double beta = 1-omega;
+    org.apache.mahout.matrix.function.Double9Function function = new org.apache.mahout.matrix.function.Double9Function() {
+      public final double apply(  
+        double a00, double a01, double a02,
+        double a10, double a11, double a12,
+        double a20, double a21, double a22) {
+        return alpha*a11 + beta*(a01+a10+a12+a21);
+      }
+    };
+    public String toString() { return "A.zAssign8Neighbors(5 point function) [Mflops/sec]";  }
+    public void init() { B.assign(D); }
+    public void apply(org.apache.mahout.matrix.Timer timer) { A.zAssign8Neighbors(B,function); }
+    public double operations() { // Mflops
+      double n = A.columns();
+      double m = A.rows();
+      return 6.0 * m*n / 1.0E6; 
+    }
+  };
 }
 /**
  * 
  */
 protected static Double2DProcedure funSOR8() {
-	return new Double2DProcedure() {
-		double value = 2;
-		double omega = 1.25;
-		final double alpha = omega * 0.25;
-		final double beta = 1-omega;
-		org.apache.mahout.matrix.function.Double9Function function = new org.apache.mahout.matrix.function.Double9Function() {
-			public final double apply(	
-				double a00, double a01, double a02,
-				double a10, double a11, double a12,
-				double a20, double a21, double a22) {
-				return alpha*a11 + beta*(a00+a10+a20+a01+a21+a02+a12+a22);
-			}
-		};
-		public String toString() { return "A.zAssign8Neighbors(9 point function) [Mflops/sec]";	}
-		public void init() { B.assign(D); }
-		public void apply(org.apache.mahout.matrix.Timer timer) { A.zAssign8Neighbors(B,function); }
-		public double operations() { // Mflops
-			double n = A.columns();
-			double m = A.rows();
-			return 10.0 * m*n / 1.0E6; 
-		}
-	};
+  return new Double2DProcedure() {
+    double value = 2;
+    double omega = 1.25;
+    final double alpha = omega * 0.25;
+    final double beta = 1-omega;
+    org.apache.mahout.matrix.function.Double9Function function = new org.apache.mahout.matrix.function.Double9Function() {
+      public final double apply(  
+        double a00, double a01, double a02,
+        double a10, double a11, double a12,
+        double a20, double a21, double a22) {
+        return alpha*a11 + beta*(a00+a10+a20+a01+a21+a02+a12+a22);
+      }
+    };
+    public String toString() { return "A.zAssign8Neighbors(9 point function) [Mflops/sec]";  }
+    public void init() { B.assign(D); }
+    public void apply(org.apache.mahout.matrix.Timer timer) { A.zAssign8Neighbors(B,function); }
+    public double operations() { // Mflops
+      double n = A.columns();
+      double m = A.rows();
+      return 10.0 * m*n / 1.0E6; 
+    }
+  };
 }
 /**
  * 
  */
 protected static Double2DProcedure funSort() {
-	return new Double2DProcedure() { 
-		public String toString() { return "xxxxxxx";	}
-		public void init() { A.assign(C); }
-		public void apply(org.apache.mahout.matrix.Timer timer) { A.viewSorted(0); }
-	};
+  return new Double2DProcedure() { 
+    public String toString() { return "xxxxxxx";  }
+    public void init() { A.assign(C); }
+    public void apply(org.apache.mahout.matrix.Timer timer) { A.viewSorted(0); }
+  };
 }
 /**
  * Not yet documented.
  */
 protected static DoubleFactory2D getFactory(String type) {
-	DoubleFactory2D factory;
-	if (type.equals("dense")) return DoubleFactory2D.dense;
-	if (type.equals("sparse")) return DoubleFactory2D.sparse;
-	if (type.equals("rowCompressed")) return DoubleFactory2D.rowCompressed;
-	String s = "type="+type+" is unknown. Use one of {dense,sparse,rowCompressed}";
-	throw new IllegalArgumentException(s);
+  DoubleFactory2D factory;
+  if (type.equals("dense")) return DoubleFactory2D.dense;
+  if (type.equals("sparse")) return DoubleFactory2D.sparse;
+  if (type.equals("rowCompressed")) return DoubleFactory2D.rowCompressed;
+  String s = "type="+type+" is unknown. Use one of {dense,sparse,rowCompressed}";
+  throw new IllegalArgumentException(s);
 }
 /**
  * Not yet documented.
  */
 protected static Double2DProcedure getGenericFunction(String cmd) {
-	if (cmd.equals("dgemm")) return fun_dgemm(false,false);
-	else if (cmd.equals("dgemv")) return fun_dgemv(false);
-	else if (cmd.equals("pow")) return fun_pow(2);
-	else if (cmd.equals("assign")) return funAssign();
-	else if (cmd.equals("assignGetSet")) return funAssignGetSet();
-	else if (cmd.equals("assignGetSetQuick")) return funAssignGetSetQuick();
-	else if (cmd.equals("elementwiseMult")) return funElementwiseMult();
-	else if (cmd.equals("elementwiseMultB")) return funElementwiseMultB();
-	else if (cmd.equals("SOR5")) return funSOR5();
-	else if (cmd.equals("SOR8")) return funSOR8();
-	else if (cmd.equals("LUDecompose")) return funLUDecompose();
-	else if (cmd.equals("LUSolve")) return funLUSolve();
-	else if (cmd.equals("assignLog")) return funAssignLog();
-	else if (cmd.equals("assignPlusMult")) return funAssignPlusMult();
-	/*
-	else if (cmd.equals("xxxxxxxxxxxxxxxxx")) return xxxxx();
-	}
-	*/
-	return null;
+  if (cmd.equals("dgemm")) return fun_dgemm(false,false);
+  else if (cmd.equals("dgemv")) return fun_dgemv(false);
+  else if (cmd.equals("pow")) return fun_pow(2);
+  else if (cmd.equals("assign")) return funAssign();
+  else if (cmd.equals("assignGetSet")) return funAssignGetSet();
+  else if (cmd.equals("assignGetSetQuick")) return funAssignGetSetQuick();
+  else if (cmd.equals("elementwiseMult")) return funElementwiseMult();
+  else if (cmd.equals("elementwiseMultB")) return funElementwiseMultB();
+  else if (cmd.equals("SOR5")) return funSOR5();
+  else if (cmd.equals("SOR8")) return funSOR8();
+  else if (cmd.equals("LUDecompose")) return funLUDecompose();
+  else if (cmd.equals("LUSolve")) return funLUSolve();
+  else if (cmd.equals("assignLog")) return funAssignLog();
+  else if (cmd.equals("assignPlusMult")) return funAssignPlusMult();
+  /*
+  else if (cmd.equals("xxxxxxxxxxxxxxxxx")) return xxxxx();
+  }
+  */
+  return null;
 }
 /**
  * Executes a command
  */
 protected static boolean handle(String[] params) {
-	boolean success = true;
-	String cmd = params[0];
-	if (cmd.equals("dgemm")) bench_dgemm(params);
-	else if (cmd.equals("dgemv")) bench_dgemv(params);
-	else if (cmd.equals("pow")) bench_pow(params);
-	else {
-		Double2DProcedure fun = getGenericFunction(cmd);
-		if (fun!=null) {
-			benchGeneric(fun,params);
-		}
-		else {
-			success = false;
-			String s = "Command="+params[0]+" is illegal or unknown. Should be one of "+commands()+"followed by appropriate parameters.\n"+usage()+"\nIgnoring this line.\n";
-			System.out.println(s);
-		}
-	}				
-	return success;
+  boolean success = true;
+  String cmd = params[0];
+  if (cmd.equals("dgemm")) bench_dgemm(params);
+  else if (cmd.equals("dgemv")) bench_dgemv(params);
+  else if (cmd.equals("pow")) bench_pow(params);
+  else {
+    Double2DProcedure fun = getGenericFunction(cmd);
+    if (fun!=null) {
+      benchGeneric(fun,params);
+    }
+    else {
+      success = false;
+      String s = "Command="+params[0]+" is illegal or unknown. Should be one of "+commands()+"followed by appropriate parameters.\n"+usage()+"\nIgnoring this line.\n";
+      System.out.println(s);
+    }
+  }        
+  return success;
 }
 /**
  * Runs the matrix benchmark operations defined in args or in the file specified by args0.
  * To get detailed help on usage type java org.apache.mahout.matrix.matrix.bench.BenchmarkMatrix -help
  */
 public static void main(String[] args) {
-	int n = args.length;
-	if (n==0 || (n<=1 && args[0].equals("-help"))) { // overall help
-		System.out.println(usage());
-		return;
-	}
-	if (args[0].equals("-help")) { // help on specific command
-		if (commands().indexOf(args[1]) < 0) {
-			System.out.println(args[1]+": no such command available.\n"+usage());
-		}
-		else {
-			System.out.println(usage(args[1]));
-		}
-		return;
-	}
-		
-	System.out.println("Colt Matrix benchmark running on\n");
-	System.out.println(BenchmarkKernel.systemInfo()+"\n");
+  int n = args.length;
+  if (n==0 || (n<=1 && args[0].equals("-help"))) { // overall help
+    System.out.println(usage());
+    return;
+  }
+  if (args[0].equals("-help")) { // help on specific command
+    if (commands().indexOf(args[1]) < 0) {
+      System.out.println(args[1]+": no such command available.\n"+usage());
+    }
+    else {
+      System.out.println(usage(args[1]));
+    }
+    return;
+  }
+    
+  System.out.println("Colt Matrix benchmark running on\n");
+  System.out.println(BenchmarkKernel.systemInfo()+"\n");
     // TODO print out real version info?
-	System.out.println("Colt Version is [unknown - now in Mahout]" + "\n");
+  System.out.println("Colt Version is [unknown - now in Mahout]" + "\n");
 
-	org.apache.mahout.matrix.Timer timer = new org.apache.mahout.matrix.Timer().start();
-	if (!args[0].equals("-file")) { // interactive mode, commands supplied via java class args
-		System.out.println("\n\nExecuting command = "+new org.apache.mahout.matrix.list.ObjectArrayList(args)+" ...");
-		handle(args);
-	}
-	else { // batch mode, read commands from file
-		/* 
-		parse command file in args[0]
-		one command per line (including parameters)
-		for example:
-		// dgemm dense 2 2.0 false true 0.999 10 30 50 100 250 500 1000
-		dgemm dense 2 2.5 false true 0.999 10 50 
-		dgemm sparse 2 2.5 false true 0.001 500 1000  
-		*/
-		java.io.BufferedReader reader=null;
-		try {
-			reader = new java.io.BufferedReader(new java.io.FileReader(args[1]));
-		} catch (java.io.IOException exc) { throw new RuntimeException(exc.getMessage()); }
-		
-		java.io.StreamTokenizer stream = new java.io.StreamTokenizer(reader);
-		stream.eolIsSignificant(true);
-		stream.slashSlashComments(true); // allow // comments
-		stream.slashStarComments(true);  // allow /* comments */
-		try {
-			org.apache.mahout.matrix.list.ObjectArrayList words = new org.apache.mahout.matrix.list.ObjectArrayList();
-			int token;
-			while ((token = stream.nextToken()) != stream.TT_EOF) { // while not end of file
-				if (token == stream.TT_EOL) { // execute a command line at a time
-					//System.out.println(words);
-					if (words.size() > 0) { // ignore emty lines
-						String[] params = new String[words.size()];
-						for (int i=0; i<words.size(); i++) params[i] = (String) words.get(i);
-
-						// execute command
-						System.out.println("\n\nExecuting command = "+words+" ...");
-						handle(params);
-					}
-					words.clear();
-				}
-				else {
-					String word;
-					org.apache.mahout.matrix.matrix.impl.Former formatter = new org.apache.mahout.matrix.matrix.impl.FormerFactory().create("%G");
-					// ok: 2.0 -> 2   wrong: 2.0 -> 2.0 (kills Integer.parseInt())
-					if (token == stream.TT_NUMBER) 
-						word = formatter.form(stream.nval);
-					else 
-						word = stream.sval;
-					if (word != null) words.add(word);
-				}
-			}
-			reader.close();
-
-			System.out.println("\nCommand file name used: "+args[1]+ "\nTo reproduce and compare results, here it's contents:");
-			try {
-				reader = new java.io.BufferedReader(new java.io.FileReader(args[1]));
-			} catch (java.io.IOException exc) { throw new RuntimeException(exc.getMessage()); }
-
-			/*java.io.InputStream input = new java.io.DataInputStream(new java.io.BufferedInputStream(new java.io.FileInputStream(args[1])));
-			BufferedReader d
-						   = new BufferedReader(new InputStreamReader(in));
-						   */
-			String line;
-			while ((line = reader.readLine()) != null) { // while not end of file
-				System.out.println(line);
-			}
-			reader.close();
-			
-		} catch (java.io.IOException exc) { throw new RuntimeException(exc.getMessage()); }
-	}
-	
-	System.out.println("\nProgram execution took a total of "+timer.minutes() +" minutes.");
-	System.out.println("Good bye.");
+  org.apache.mahout.matrix.Timer timer = new org.apache.mahout.matrix.Timer().start();
+  if (!args[0].equals("-file")) { // interactive mode, commands supplied via java class args
+    System.out.println("\n\nExecuting command = "+new org.apache.mahout.matrix.list.ObjectArrayList(args)+" ...");
+    handle(args);
+  }
+  else { // batch mode, read commands from file
+    /* 
+    parse command file in args[0]
+    one command per line (including parameters)
+    for example:
+    // dgemm dense 2 2.0 false true 0.999 10 30 50 100 250 500 1000
+    dgemm dense 2 2.5 false true 0.999 10 50 
+    dgemm sparse 2 2.5 false true 0.001 500 1000  
+    */
+    java.io.BufferedReader reader=null;
+    try {
+      reader = new java.io.BufferedReader(new java.io.FileReader(args[1]));
+    } catch (java.io.IOException exc) { throw new RuntimeException(exc.getMessage()); }
+    
+    java.io.StreamTokenizer stream = new java.io.StreamTokenizer(reader);
+    stream.eolIsSignificant(true);
+    stream.slashSlashComments(true); // allow // comments
+    stream.slashStarComments(true);  // allow /* comments */
+    try {
+      org.apache.mahout.matrix.list.ObjectArrayList words = new org.apache.mahout.matrix.list.ObjectArrayList();
+      int token;
+      while ((token = stream.nextToken()) != stream.TT_EOF) { // while not end of file
+        if (token == stream.TT_EOL) { // execute a command line at a time
+          //System.out.println(words);
+          if (words.size() > 0) { // ignore emty lines
+            String[] params = new String[words.size()];
+            for (int i=0; i<words.size(); i++) params[i] = (String) words.get(i);
+
+            // execute command
+            System.out.println("\n\nExecuting command = "+words+" ...");
+            handle(params);
+          }
+          words.clear();
+        }
+        else {
+          String word;
+          org.apache.mahout.matrix.matrix.impl.Former formatter = new org.apache.mahout.matrix.matrix.impl.FormerFactory().create("%G");
+          // ok: 2.0 -> 2   wrong: 2.0 -> 2.0 (kills Integer.parseInt())
+          if (token == stream.TT_NUMBER) 
+            word = formatter.form(stream.nval);
+          else 
+            word = stream.sval;
+          if (word != null) words.add(word);
+        }
+      }
+      reader.close();
+
+      System.out.println("\nCommand file name used: "+args[1]+ "\nTo reproduce and compare results, here it's contents:");
+      try {
+        reader = new java.io.BufferedReader(new java.io.FileReader(args[1]));
+      } catch (java.io.IOException exc) { throw new RuntimeException(exc.getMessage()); }
+
+      /*java.io.InputStream input = new java.io.DataInputStream(new java.io.BufferedInputStream(new java.io.FileInputStream(args[1])));
+      BufferedReader d
+               = new BufferedReader(new InputStreamReader(in));
+               */
+      String line;
+      while ((line = reader.readLine()) != null) { // while not end of file
+        System.out.println(line);
+      }
+      reader.close();
+      
+    } catch (java.io.IOException exc) { throw new RuntimeException(exc.getMessage()); }
+  }
+  
+  System.out.println("\nProgram execution took a total of "+timer.minutes() +" minutes.");
+  System.out.println("Good bye.");
 }
 /**
  * Executes procedure repeatadly until more than minSeconds have elapsed.
  */
 protected static void run(double minSeconds, String title, Double2DProcedure function, String[] types, int[] sizes, double[] densities) {
-	//int[] sizes = {33,500,1000};
-	//double[] densities = {0.001,0.01,0.99};
-	
-	//int[] sizes = {3,5,7,9,30,45,60,61,100,200,300,500,800,1000};
-	//double[] densities = {0.001,0.01,0.1,0.999};
-	
-	//int[] sizes = {3};
-	//double[] densities = {0.1};
-
-	DoubleMatrix3D timings = DoubleFactory3D.dense.make(types.length,sizes.length,densities.length);
-	org.apache.mahout.matrix.Timer runTime = new org.apache.mahout.matrix.Timer().start();
-	for (int k=0; k<types.length; k++) {
-		//DoubleFactory2D factory = (k==0 ? DoubleFactory2D.dense : k==1 ? DoubleFactory2D.sparse : DoubleFactory2D.rowCompressed);
-		//DoubleFactory2D factory = (k==0 ? DoubleFactory2D.dense : k==1 ? DoubleFactory2D.sparse : k==2 ? DoubleFactory2D.rowCompressed : DoubleFactory2D.rowCompressedModified);
-		DoubleFactory2D factory = getFactory(types[k]);
-		System.out.print("\n@"); 
-
-		for (int i=0; i<sizes.length; i++) {
-			int size = sizes[i];
-			System.out.print("x");
-			//System.out.println("doing size="+size+"...");
-
-			for (int j=0; j<densities.length; j++) {
-				final double density = densities[j];
-				System.out.print(".");
-				//System.out.println("   doing density="+density+"...");
-				float opsPerSec;
-
-				//if (true) {
-				//if (!((k==1 && density >= 0.1 && size >=100) || (size>5000 && (k==0 || density>1.0E-4) ))) {
-				if (!((k>0 && density >= 0.1 && size >=500) )) {
-					double val = 0.5;
-					function.A=null; function.B=null; function.C=null; function.D=null; // --> help gc before allocating new mem
-					DoubleMatrix2D A = factory.sample(size,size,val,density);
-					DoubleMatrix2D B = factory.sample(size,size,val,density);
-					function.setParameters(A,B);
-					A = null; B = null; // help gc
-					double ops = function.operations();
-					double secs = BenchmarkKernel.run(minSeconds,function);
-					opsPerSec = (float) (ops / secs);
-				}
-				else { // skip this parameter combination (not used in practice & would take a lot of memory and time)
-					opsPerSec = Float.NaN;
-				}
-				timings.set(k,i,j,opsPerSec);
-				//System.out.println(secs);
-				//System.out.println(opsPerSec+" Mops/sec\n");
-			}
-		}
-	}
-	runTime.stop();
-	
-	String sliceAxisName = "type";
-	String rowAxisName = "size"; 
-	String colAxisName = "d"; //"density";
-	//String[] sliceNames = {"dense", "sparse"};
-	//String[] sliceNames = {"dense", "sparse", "rowCompressed"};
-	String[] sliceNames = types;
-	//hep.aida.bin.BinFunctions1D F = hep.aida.bin.BinFunctions1D.functions;
-	//hep.aida.bin.BinFunction1D[] aggr = null; //{F.mean, F.median, F.sum};
-	String[] rowNames = new String[sizes.length];
-	String[] colNames = new String[densities.length];
-	for (int i=sizes.length; --i >= 0; ) rowNames[i]=Integer.toString(sizes[i]);
-	for (int j=densities.length; --j >= 0; ) colNames[j]=Double.toString(densities[j]);
-	System.out.println("*");
-	// show transposed
-	String tmp = rowAxisName; rowAxisName = colAxisName; colAxisName = tmp;
-	String[] tmp2 = rowNames; rowNames = colNames; colNames = tmp2;
-	timings = timings.viewDice(0,2,1);
-	//System.out.println(new org.apache.mahout.matrix.matrix.doublealgo.Formatter("%1.3G").toTitleString(timings,sliceNames,rowNames,colNames,sliceAxisName,rowAxisName,colAxisName,"Performance of "+title,aggr));
-	/*
-	title = "Speedup of dense over sparse";
-	DoubleMatrix2D speedup = org.apache.mahout.matrix.matrix.doublealgo.Transform.div(timings.viewSlice(0).copy(),timings.viewSlice(1));
-	System.out.println("\n"+new org.apache.mahout.matrix.matrix.doublealgo.Formatter("%1.3G").toTitleString(speedup,rowNames,colNames,rowAxisName,colAxisName,title,aggr));
-	*/
-	System.out.println("Run took a total of "+runTime+". End of run.");
+  //int[] sizes = {33,500,1000};
+  //double[] densities = {0.001,0.01,0.99};
+  
+  //int[] sizes = {3,5,7,9,30,45,60,61,100,200,300,500,800,1000};
+  //double[] densities = {0.001,0.01,0.1,0.999};
+  
+  //int[] sizes = {3};
+  //double[] densities = {0.1};
+
+  DoubleMatrix3D timings = DoubleFactory3D.dense.make(types.length,sizes.length,densities.length);
+  org.apache.mahout.matrix.Timer runTime = new org.apache.mahout.matrix.Timer().start();
+  for (int k=0; k<types.length; k++) {
+    //DoubleFactory2D factory = (k==0 ? DoubleFactory2D.dense : k==1 ? DoubleFactory2D.sparse : DoubleFactory2D.rowCompressed);
+    //DoubleFactory2D factory = (k==0 ? DoubleFactory2D.dense : k==1 ? DoubleFactory2D.sparse : k==2 ? DoubleFactory2D.rowCompressed : DoubleFactory2D.rowCompressedModified);
+    DoubleFactory2D factory = getFactory(types[k]);
+    System.out.print("\n@"); 
+
+    for (int i=0; i<sizes.length; i++) {
+      int size = sizes[i];
+      System.out.print("x");
+      //System.out.println("doing size="+size+"...");
+
+      for (int j=0; j<densities.length; j++) {
+        final double density = densities[j];
+        System.out.print(".");
+        //System.out.println("   doing density="+density+"...");
+        float opsPerSec;
+
+        //if (true) {
+        //if (!((k==1 && density >= 0.1 && size >=100) || (size>5000 && (k==0 || density>1.0E-4) ))) {
+        if (!((k>0 && density >= 0.1 && size >=500) )) {
+          double val = 0.5;
+          function.A=null; function.B=null; function.C=null; function.D=null; // --> help gc before allocating new mem
+          DoubleMatrix2D A = factory.sample(size,size,val,density);
+          DoubleMatrix2D B = factory.sample(size,size,val,density);
+          function.setParameters(A,B);
+          A = null; B = null; // help gc
+          double ops = function.operations();
+          double secs = BenchmarkKernel.run(minSeconds,function);
+          opsPerSec = (float) (ops / secs);
+        }
+        else { // skip this parameter combination (not used in practice & would take a lot of memory and time)
+          opsPerSec = Float.NaN;
+        }
+        timings.set(k,i,j,opsPerSec);
+        //System.out.println(secs);
+        //System.out.println(opsPerSec+" Mops/sec\n");
+      }
+    }
+  }
+  runTime.stop();
+  
+  String sliceAxisName = "type";
+  String rowAxisName = "size"; 
+  String colAxisName = "d"; //"density";
+  //String[] sliceNames = {"dense", "sparse"};
+  //String[] sliceNames = {"dense", "sparse", "rowCompressed"};
+  String[] sliceNames = types;
+  //hep.aida.bin.BinFunctions1D F = hep.aida.bin.BinFunctions1D.functions;
+  //hep.aida.bin.BinFunction1D[] aggr = null; //{F.mean, F.median, F.sum};
+  String[] rowNames = new String[sizes.length];
+  String[] colNames = new String[densities.length];
+  for (int i=sizes.length; --i >= 0; ) rowNames[i]=Integer.toString(sizes[i]);
+  for (int j=densities.length; --j >= 0; ) colNames[j]=Double.toString(densities[j]);
+  System.out.println("*");
+  // show transposed
+  String tmp = rowAxisName; rowAxisName = colAxisName; colAxisName = tmp;
+  String[] tmp2 = rowNames; rowNames = colNames; colNames = tmp2;
+  timings = timings.viewDice(0,2,1);
+  //System.out.println(new org.apache.mahout.matrix.matrix.doublealgo.Formatter("%1.3G").toTitleString(timings,sliceNames,rowNames,colNames,sliceAxisName,rowAxisName,colAxisName,"Performance of "+title,aggr));
+  /*
+  title = "Speedup of dense over sparse";
+  DoubleMatrix2D speedup = org.apache.mahout.matrix.matrix.doublealgo.Transform.div(timings.viewSlice(0).copy(),timings.viewSlice(1));
+  System.out.println("\n"+new org.apache.mahout.matrix.matrix.doublealgo.Formatter("%1.3G").toTitleString(speedup,rowNames,colNames,rowAxisName,colAxisName,title,aggr));
+  */
+  System.out.println("Run took a total of "+runTime+". End of run.");
 }
 /**
  * Executes procedure repeatadly until more than minSeconds have elapsed.
  */
 protected static void runSpecial(double minSeconds, String title, Double2DProcedure function) {
-	int[] sizes =        {10000};
-	double[] densities = {0.00001};
-	boolean[] sparses  = {true};
-	
-	DoubleMatrix2D timings = DoubleFactory2D.dense.make(sizes.length,4);
-	org.apache.mahout.matrix.Timer runTime = new org.apache.mahout.matrix.Timer().start();
-	for (int i=0; i<sizes.length; i++) {
-		int size = sizes[i];
-		double density = densities[i];
-		boolean sparse = sparses[i];
-		final DoubleFactory2D factory = (sparse ? DoubleFactory2D.sparse : DoubleFactory2D.dense);
-		System.out.print("\n@"); 
-
-		System.out.print("x");
-		double val = 0.5;
-		function.A=null; function.B=null; function.C=null; function.D=null; // --> help gc before allocating new mem
-		DoubleMatrix2D A = factory.sample(size,size,val,density);
-		DoubleMatrix2D B = factory.sample(size,size,val,density);
-		function.setParameters(A,B);
-		A = null; B = null; // help gc
-		float secs = BenchmarkKernel.run(minSeconds,function);
-		double ops = function.operations();
-		float opsPerSec = (float) (ops / secs);
-		timings.viewRow(i).set(0,sparse ? 0: 1);
-		timings.viewRow(i).set(1,size);
-		timings.viewRow(i).set(2,density);
-		timings.viewRow(i).set(3,opsPerSec);
-		//System.out.println(secs);
-		//System.out.println(opsPerSec+" Mops/sec\n");
-	}
-	runTime.stop();
-	
-	//hep.aida.bin.BinFunctions1D F = hep.aida.bin.BinFunctions1D.functions;
-	//hep.aida.bin.BinFunction1D[] aggr = null; //{F.mean, F.median, F.sum};
-	String[] rowNames = null;
-	String[] colNames = {"dense (y=1,n=0)", "size", "density", "flops/sec"};
-	String rowAxisName = null;
-	String colAxisName = null;
-	System.out.println("*");
-	//System.out.println(new org.apache.mahout.matrix.matrix.doublealgo.Formatter("%1.3G").toTitleString(timings,rowNames,colNames,rowAxisName,colAxisName,title,aggr));
+  int[] sizes =        {10000};
+  double[] densities = {0.00001};
+  boolean[] sparses  = {true};
+  
+  DoubleMatrix2D timings = DoubleFactory2D.dense.make(sizes.length,4);
+  org.apache.mahout.matrix.Timer runTime = new org.apache.mahout.matrix.Timer().start();
+  for (int i=0; i<sizes.length; i++) {
+    int size = sizes[i];
+    double density = densities[i];
+    boolean sparse = sparses[i];
+    final DoubleFactory2D factory = (sparse ? DoubleFactory2D.sparse : DoubleFactory2D.dense);
+    System.out.print("\n@"); 
+
+    System.out.print("x");
+    double val = 0.5;
+    function.A=null; function.B=null; function.C=null; function.D=null; // --> help gc before allocating new mem
+    DoubleMatrix2D A = factory.sample(size,size,val,density);
+    DoubleMatrix2D B = factory.sample(size,size,val,density);
+    function.setParameters(A,B);
+    A = null; B = null; // help gc
+    float secs = BenchmarkKernel.run(minSeconds,function);
+    double ops = function.operations();
+    float opsPerSec = (float) (ops / secs);
+    timings.viewRow(i).set(0,sparse ? 0: 1);
+    timings.viewRow(i).set(1,size);
+    timings.viewRow(i).set(2,density);
+    timings.viewRow(i).set(3,opsPerSec);
+    //System.out.println(secs);
+    //System.out.println(opsPerSec+" Mops/sec\n");
+  }
+  runTime.stop();
+  
+  //hep.aida.bin.BinFunctions1D F = hep.aida.bin.BinFunctions1D.functions;
+  //hep.aida.bin.BinFunction1D[] aggr = null; //{F.mean, F.median, F.sum};
+  String[] rowNames = null;
+  String[] colNames = {"dense (y=1,n=0)", "size", "density", "flops/sec"};
+  String rowAxisName = null;
+  String colAxisName = null;
+  System.out.println("*");
+  //System.out.println(new org.apache.mahout.matrix.matrix.doublealgo.Formatter("%1.3G").toTitleString(timings,rowNames,colNames,rowAxisName,colAxisName,title,aggr));
 
-	System.out.println("Run took a total of "+runTime+". End of run.");
+  System.out.println("Run took a total of "+runTime+". End of run.");
 }
 /**
  * Overall usage.
  */
 protected static String usage() {
-	String usage = 
+  String usage = 
 "\nUsage (help): To get this help, type java org.apache.mahout.matrix.matrix.bench.BenchmarkMatrix -help\n"+
 "To get help on a command's args, omit args and type java org.apache.mahout.matrix.matrix.bench.BenchmarkMatrix -help <command>\n" +
 "Available commands: "+commands()+"\n\n"+
@@ -912,34 +912,34 @@
 "dgemv rowCompressed 1 2.0 0.001 false 5 10 25 50 100 250 500 1000\n"+
 "*/\n"+
 "// more comments ignored\n";
-	return usage;
+  return usage;
 }
 /**
  * Usage of a specific command.
  */
 protected static String usage(String cmd) {
-	String usage = cmd + " description: " + getGenericFunction(cmd).toString() +
-	"\nArguments to be supplied:\n" +
-	//String usage = "Illegal arguments! Arguments to be supplied:\n" +
-		//"\te.g. "+cmd+" dense 2 2.0 false 0.999 10 30 50 100 250 500 1000\n"+
-		"\t<operation> <type> <cpus> <minSecs> <density>";
-	if (cmd.equals("dgemv")) usage = usage +	" <transposeA>";
-	if (cmd.equals("dgemm")) usage = usage +	" <transposeA> <transposeB>";
-	if (cmd.equals("pow")) usage = usage +	" <exponent>";
-	usage = usage +
-		" {sizes}\n" +
-		"where\n" +
-		"\toperation = the operation to benchmark; in this case: "+cmd+"\n"+
-		"\ttype = matrix type to be used; e.g. dense, sparse or rowCompressed\n"+
-		"\tcpus = #cpus available; e.g. 1 or 2 or ...\n"+
-		"\tminSecs = #seconds each operation shall at least run; e.g. 2.0 is a good number giving realistic timings\n"+
-		"\tdensity = the density of the matrices to be benchmarked; e.g. 0.999 is very dense, 0.001 is very sparse\n";
-		
-	if (cmd.equals("dgemv")) usage = usage +	"\ttransposeA = false or true\n";
-	if (cmd.equals("dgemm")) usage = usage +	"\ttransposeA = false or true\n\ttransposeB = false or true\n";
-	if (cmd.equals("pow")) usage = usage +	"\texponent = the number of times to multiply; e.g. 1000\n";
-	usage = usage +
-		"\tsizes = a list of problem sizes; e.g. 100 200 benchmarks squared 100x100 and 200x200 matrices";
-	return usage;
+  String usage = cmd + " description: " + getGenericFunction(cmd).toString() +
+  "\nArguments to be supplied:\n" +
+  //String usage = "Illegal arguments! Arguments to be supplied:\n" +
+    //"\te.g. "+cmd+" dense 2 2.0 false 0.999 10 30 50 100 250 500 1000\n"+
+    "\t<operation> <type> <cpus> <minSecs> <density>";
+  if (cmd.equals("dgemv")) usage = usage +  " <transposeA>";
+  if (cmd.equals("dgemm")) usage = usage +  " <transposeA> <transposeB>";
+  if (cmd.equals("pow")) usage = usage +  " <exponent>";
+  usage = usage +
+    " {sizes}\n" +
+    "where\n" +
+    "\toperation = the operation to benchmark; in this case: "+cmd+"\n"+
+    "\ttype = matrix type to be used; e.g. dense, sparse or rowCompressed\n"+
+    "\tcpus = #cpus available; e.g. 1 or 2 or ...\n"+
+    "\tminSecs = #seconds each operation shall at least run; e.g. 2.0 is a good number giving realistic timings\n"+
+    "\tdensity = the density of the matrices to be benchmarked; e.g. 0.999 is very dense, 0.001 is very sparse\n";
+    
+  if (cmd.equals("dgemv")) usage = usage +  "\ttransposeA = false or true\n";
+  if (cmd.equals("dgemm")) usage = usage +  "\ttransposeA = false or true\n\ttransposeB = false or true\n";
+  if (cmd.equals("pow")) usage = usage +  "\texponent = the number of times to multiply; e.g. 1000\n";
+  usage = usage +
+    "\tsizes = a list of problem sizes; e.g. 100 200 benchmarks squared 100x100 and 200x200 matrices";
+  return usage;
 }
 }

Modified: lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/Double2DProcedure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/Double2DProcedure.java?rev=883974&r1=883973&r2=883974&view=diff
==============================================================================
--- lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/Double2DProcedure.java (original)
+++ lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/bench/Double2DProcedure.java Wed Nov 25 03:41:28 2009
@@ -11,23 +11,23 @@
 import org.apache.mahout.matrix.matrix.DoubleMatrix2D;
 
 abstract class Double2DProcedure implements TimerProcedure {
-	public DoubleMatrix2D A;
-	public DoubleMatrix2D B;
-	public DoubleMatrix2D C;
-	public DoubleMatrix2D D;
+  public DoubleMatrix2D A;
+  public DoubleMatrix2D B;
+  public DoubleMatrix2D C;
+  public DoubleMatrix2D D;
 /**
  * The number of operations a single call to "apply" involves.
  */
 public double operations() {
-	return A.rows()*A.columns() / 1.0E6;
+  return A.rows()*A.columns() / 1.0E6;
 }
 /**
  * Sets the matrices to operate upon.
  */
 public void setParameters(DoubleMatrix2D A, DoubleMatrix2D B) {
-	this.A=A;
-	this.B=B;
-	this.C=A.copy();
-	this.D=B.copy();
+  this.A=A;
+  this.B=B;
+  this.C=A.copy();
+  this.D=B.copy();
 }
 }

Modified: lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix1DComparator.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix1DComparator.java?rev=883974&r1=883973&r2=883974&view=diff
==============================================================================
--- lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix1DComparator.java (original)
+++ lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix1DComparator.java Wed Nov 25 03:41:28 2009
@@ -20,8 +20,6 @@
  * order for the data structure to serialize successfully, the comparator (if
  * provided) must implement <tt>Serializable</tt>.<p>
  *
- * @author wolfgang.hoschek@cern.ch
- * @version 1.0, 09/24/99
  * @see java.util.Comparator
  * @see org.apache.mahout.colt
  * @see org.apache.mahout.matrix.Sorting
@@ -51,8 +49,8 @@
  *
  * 
  * @return a negative integer, zero, or a positive integer as the
- * 	       first argument is less than, equal to, or greater than the
- *	       second. 
+ *          first argument is less than, equal to, or greater than the
+ *         second. 
  */
 int compare(DoubleMatrix1D o1, DoubleMatrix1D o2);
 /**
@@ -73,8 +71,8 @@
  *
  * @param   obj   the reference object with which to compare.
  * @return  <code>true</code> only if the specified object is also
- *		a comparator and it imposes the same ordering as this
- *		comparator.
+ *    a comparator and it imposes the same ordering as this
+ *    comparator.
  * @see     java.lang.Object#equals(java.lang.Object)
  * @see java.lang.Object#hashCode()
  */

Modified: lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix2DComparator.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix2DComparator.java?rev=883974&r1=883973&r2=883974&view=diff
==============================================================================
--- lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix2DComparator.java (original)
+++ lucene/mahout/trunk/matrix/src/main/java/org/apache/mahout/matrix/matrix/doublealgo/DoubleMatrix2DComparator.java Wed Nov 25 03:41:28 2009
@@ -20,8 +20,6 @@
  * order for the data structure to serialize successfully, the comparator (if
  * provided) must implement <tt>Serializable</tt>.<p>
  *
- * @author wolfgang.hoschek@cern.ch
- * @version 1.0, 09/24/99
  * @see java.util.Comparator
  * @see org.apache.mahout.colt
  * @see org.apache.mahout.matrix.Sorting
@@ -51,8 +49,8 @@
  *
  * 
  * @return a negative integer, zero, or a positive integer as the
- * 	       first argument is less than, equal to, or greater than the
- *	       second. 
+ *          first argument is less than, equal to, or greater than the
+ *         second. 
  */
 int compare(DoubleMatrix2D o1, DoubleMatrix2D o2);
 /**
@@ -73,8 +71,8 @@
  *
  * @param   obj   the reference object with which to compare.
  * @return  <code>true</code> only if the specified object is also
- *		a comparator and it imposes the same ordering as this
- *		comparator.
+ *    a comparator and it imposes the same ordering as this
+ *    comparator.
  * @see     java.lang.Object#equals(java.lang.Object)
  * @see java.lang.Object#hashCode()
  */