package org.la4j.operation.ooplace;
import org.la4j.Matrix;
import org.la4j.operation.CommonMatrixMatrixOperation;
public class OoPlaceKroneckerProduct extends CommonMatrixMatrixOperation<Matrix> {
// TODO: It should not be common.
@Override
public Matrix applyCommon(Matrix a, Matrix b) {
int n = a.rows() * b.rows();
int m = a.columns() * b.columns();
int p = b.rows();
int q = b.columns();
Matrix result = a.blankOfShape(n, m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
result.set(i, j, a.get(i / p, j / q) * b.get(i % p, j % q));
}
}
return result;
}
}