私のアルゴリズムのボトルネックは、KPro と呼ばれる関数 Kronecker Product です。
gsl_matrix *KPro(gsl_matrix *a, gsl_matrix *b) {
int i, j, k, l;
int m, p, n, q;
m = a->size1;
p = a->size2;
n = b->size1;
q = b->size2;
gsl_matrix *c = gsl_matrix_alloc(m*n, p*q);
double da, db;
for (i = 0; i < m; i++) {
for (j = 0; j < p; j++) {
da = gsl_matrix_get (a, i, j);
for (k = 0; k < n; k++) {
for (l = 0; l < q; l++) {
db = gsl_matrix_get (b, k, l);
gsl_matrix_set (c, n*i+k, q*j+l, da * db);
}
}
}
}
return c;
}
GSL を使用した効率的な実装を知っていますか? 適切なルーチンが見つかりません。