dotMMsmall method
Utility for dotMM
Implementation
List<List<double>> dotMMsmall(List<List<double>> x, List<List<double>> y) {
int i, j, k, i0;
int p = x.length;
int q = y.length;
int r = y[0].length;
List<List<double>> ret = List(p);
List<double> foo, bar;
double woo;
for (i = p - 1; i >= 0; i--) {
foo = List(r);
bar = x[i];
for (k = r - 1; k >= 0; k--) {
woo = bar[q - 1] * y[q - 1][k];
for (j = q - 2; j >= 1; j -= 2) {
i0 = j - 1;
woo += bar[j] * y[j][k] + bar[i0] * y[i0][k];
}
if (j == 0) {
woo += bar[0] * y[0][k];
}
foo[k] = woo;
}
ret[i] = foo;
}
return ret;
}