public Matrix times(Matrix a, Matrix b) { final double[][] ad = fromMatrix(a); final double[][] bd = fromMatrix(b); return this.times(ad, bd); }
public ThreadedMatrixMulti(int numRows, int numCols) { this.newAnswer(numRows, numCols); }
@Override public void perform(Integer object) { final int rowi = object / answerCols; final int coli = object - (rowi * answerCols); double dot = 0; for (int i = 0; i < a[rowi].length; i++) { dot += a[rowi][i] * b[i][coli]; } ThreadedMatrixMulti.this.setAnswerElement(rowi, coli, dot); } }
public Matrix times(double[][] a, double[][] b) { this.a = a; this.b = b; this.answerCols = b[0].length; this.answerRows = a.length; if (this.answer != null) { if (!(this.answer[0].length == answerCols && this.answer.length == answerRows)) { this.answer = newAnswer(answerRows, answerCols); } } else { this.answer = newAnswer(answerRows, answerCols); } Parallel.forIndex(0, answerRows * answerCols, 1, new MultiplicationOperation()); return DenseMatrixFactoryMTJ.INSTANCE.copyArray(this.answer); }