LIB "tst.lib"; tst_init(); proc tensorMaps(matrix M, matrix N) { int r=ncols(M); int s=nrows(M); int p=ncols(N); int q=nrows(N); int a,b,c,d; matrix R[s*q][r*p]; for(b=1;b<=p;b++) { for(d=1;d<=q;d++) { for(a=1;a<=r;a++) { for(c=1;c<=s;c++) { R[(c-1)*q+d,(a-1)*p+b]=M[c,a]*N[d,b]; } } } } return(R); } proc binom (int n, int k) { int l; int r=1; if ( k > n-k ) { k = n-k; } if ( k<=0 or k>n ) { r = (k==0)*r; } for (l=1; l<=k; l++ ) { r=r*(n+1-l)/l; } return(r); } proc basisNumber(int n,intvec v) { int p=size(v); if(p==1){return(v[1]);} int j=n-1; int b; while(j>=n-v[1]+1) { b=b+binom(j,p-1); j--; } intvec w=v-v[1]; w=w[2..size(w)]; b=b+basisNumber(n-v[1],w); return(b); } proc basisElement(int n,int p,int N) { if(p==1){return(N);} int s,R; while(R