jaroslav@314: /** jaroslav@314: * Back 2 Browser Bytecode Translator jaroslav@314: * Copyright (C) 2012 Jaroslav Tulach jaroslav@314: * jaroslav@314: * This program is free software: you can redistribute it and/or modify jaroslav@314: * it under the terms of the GNU General Public License as published by jaroslav@314: * the Free Software Foundation, version 2 of the License. jaroslav@314: * jaroslav@314: * This program is distributed in the hope that it will be useful, jaroslav@314: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@314: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@314: * GNU General Public License for more details. jaroslav@314: * jaroslav@314: * You should have received a copy of the GNU General Public License jaroslav@314: * along with this program. Look for COPYING file in the top folder. jaroslav@314: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@314: */ 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: }