benchmarks/matrix-multiplication/src/main/java/org/apidesign/benchmark/matrixmul/Matrix.java
changeset 381 70d15cf323ba
parent 314 1a3f102e5ea5
child 386 c02d1729f024
     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  }