benchmarks/matrix-multiplication/src/main/java/org/apidesign/benchmark/matrixmul/Matrix.java
1.1 --- a/benchmarks/matrix-multiplication/src/main/java/org/apidesign/benchmark/matrixmul/Matrix.java Thu Dec 13 08:40:39 2012 +0100
1.2 +++ b/benchmarks/matrix-multiplication/src/main/java/org/apidesign/benchmark/matrixmul/Matrix.java Tue Dec 25 14:07:02 2012 +0100
1.3 @@ -17,17 +17,20 @@
1.4 */
1.5 package org.apidesign.benchmark.matrixmul;
1.6
1.7 -//import java.io.PrintStream;
1.8 -//import java.util.Random;
1.9 +import java.io.IOException;
1.10 +import java.util.Arrays;
1.11
1.12 public class Matrix {
1.13 -
1.14 private final int rank;
1.15 - private float data[][];
1.16 + private final float data[][];
1.17
1.18 public Matrix(int r) {
1.19 - rank = r;
1.20 - data = new float[r][r];
1.21 + this(r, new float[r][r]);
1.22 + }
1.23 +
1.24 + private Matrix(int r, float[][] data) {
1.25 + this.rank = r;
1.26 + this.data = data;
1.27 }
1.28
1.29 public void setElement(int i, int j, float value) {
1.30 @@ -62,20 +65,44 @@
1.31 res[i][j] = ij;
1.32 }
1.33 }
1.34 - data = res;
1.35 -
1.36 - return this;
1.37 + return new Matrix(rank, res);
1.38 }
1.39
1.40 - /*
1.41 - public void printOn(PrintStream s) {
1.42 + public void printOn(Appendable s) throws IOException {
1.43 for (int i = 0; i < rank; i++) {
1.44 + String sep = "";
1.45 for (int j = 0; j < rank; j++) {
1.46 - s.printf("%f ", data[i][j]);
1.47 + s.append(sep + data[i][j]);
1.48 + sep = " ";
1.49 }
1.50 - s.println();
1.51 + s.append("\n");
1.52 }
1.53 }
1.54 - */
1.55 -
1.56 +
1.57 + @Override
1.58 + public boolean equals(Object obj) {
1.59 + if (obj instanceof Matrix) {
1.60 + Matrix snd = (Matrix)obj;
1.61 + if (snd.rank != rank) {
1.62 + return false;
1.63 + }
1.64 + for (int i = 0; i < rank; i++) {
1.65 + for (int j = 0; j < rank; j++) {
1.66 + if (data[i][j] != snd.data[i][j]) {
1.67 + return false;
1.68 + }
1.69 + }
1.70 + }
1.71 + return true;
1.72 + }
1.73 + return false;
1.74 + }
1.75 +
1.76 + @Override
1.77 + public int hashCode() {
1.78 + int hash = 3;
1.79 + hash = 97 * hash + this.rank;
1.80 + hash = 97 * hash + Arrays.deepHashCode(this.data);
1.81 + return hash;
1.82 + }
1.83 }