Martin@268: package org.apidesign.benchmark.matrixmul; Martin@268: Martin@268: //import java.io.PrintStream; Martin@268: //import java.util.Random; Martin@268: Martin@268: public class Matrix { Martin@268: Martin@268: private final int rank; Martin@268: private float data[][]; Martin@268: Martin@268: public Matrix(int r) { Martin@268: rank = r; Martin@268: data = new float[r][r]; Martin@268: } Martin@268: Martin@268: public void setElement(int i, int j, float value) { Martin@268: data[i][j] = value; Martin@268: } Martin@268: public float getElement(int i, int j) { Martin@268: return data[i][j]; Martin@268: } Martin@268: Martin@268: public void generateData() { Martin@268: //final Random rand = new Random(); Martin@268: //final int x = 10; Martin@268: for (int i = 0; i < rank; i++) { Martin@268: for (int j = 0; j < rank; j++) { Martin@268: data[i][j] = i + j; Martin@268: } Martin@268: } Martin@268: } Martin@268: Martin@268: public Matrix multiply(Matrix m) { Martin@268: if (rank != m.rank) { Martin@268: throw new IllegalArgumentException("Rank doesn't match"); Martin@268: } Martin@268: Martin@268: final float res[][] = new float[rank][rank]; Martin@268: for (int i = 0; i < rank; i++) { Martin@268: for (int j = 0; j < rank; j++) { Martin@268: float ij = 0; Martin@268: for (int q = 0; q < rank; q++) { Martin@268: ij += data[i][q] * m.data[q][j]; Martin@268: } Martin@268: res[i][j] = ij; Martin@268: } Martin@268: } Martin@268: data = res; Martin@268: Martin@268: return this; Martin@268: } Martin@268: Martin@268: /* Martin@268: public void printOn(PrintStream s) { Martin@268: for (int i = 0; i < rank; i++) { Martin@268: for (int j = 0; j < rank; j++) { Martin@268: s.printf("%f ", data[i][j]); Martin@268: } Martin@268: s.println(); Martin@268: } Martin@268: } Martin@268: */ Martin@268: Martin@268: }