matrix* Weyl_root_orbit(entry* v) { lie_Index i,j,r=Lierank(grp),s=Ssrank(grp); entry* x=mkintarray(r); matrix* orbit, *result; entry** m; lie_Index dc=Detcartan(); mulvecmatelm(v,Cartan()->elm,x,s,r); orbit=Weyl_orbit(x,NULL); result=mkmatrix(orbit->nrows,s); m=result->elm; mulmatmatelm(orbit->elm,Icartan()->elm,m,orbit->nrows,s,s); freemem(orbit); for (i=0; i<result->nrows; ++i) for (j=0; j<s; ++j) m[i][j]/=dc; return result; }
poly *pol_mul_pol_mat(poly *a, matrix *b) { poly *m; int i; if (a->ncols != b->nrows) error("Number variables arg1 unequal number of rows arg2 .\n"); m = mkpoly(a->nrows,b->ncols); mulmatmatelm(a->elm,b->elm,m->elm,a->nrows,a->ncols,b->ncols); for (i=0;i<m->nrows;i++) { m->coef[i] = a->coef[i]; setshared(m->coef[i]); } return m; }