dotMMsmall method

List<List<double>> dotMMsmall (List<List<double>> x, List<List<double>> y)

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;
}