# Singular

#### D.15.14.31 multiDegBasis

Procedure from library `multigrading.lib` (see multigrading_lib).

Usage:
multidegree d

Assume:
current ring is multigraded, monomial ordering is global

Purpose:
compute all monomials of multidegree d

Example:
 ```LIB "multigrading.lib"; ring R = 0, (x, y), dp; intmat g1[2][2]=1,0,0,1; intmat l[2][1]=2,0; intmat g2[2][2]=1,1,1,1; intvec v1=4,0; intvec v2=4,4; intmat g3[1][2]=1,1; setBaseMultigrading(g3); intvec v3=4:1; v3; ==> 4 multiDegBasis(v3); ==> _[1]=x4 ==> _[2]=y4 ==> _[3]=xy3 ==> _[4]=x2y2 ==> _[5]=x3y setBaseMultigrading(g1,l); multiDegBasis(v1); ==> _[1]=1 setBaseMultigrading(g2); multiDegBasis(v2); ==> _[1]=y4 ==> _[2]=x4 ==> _[3]=x3y ==> _[4]=x2y2 ==> _[5]=xy3 intmat M[2][2] = 1, -1, -1, 1; intvec d = -2, 2; setBaseMultigrading(M); multiDegBasis(d); ==> _[1]=y2 attrib(_, "ZeroPart"); ==> _[1]=xy kill R, M, d; ring R = 0, (x, y, z), dp; intmat M[2][3] = 1, -2, 1, 1, 1, 0; intmat L[2][1] = 0, 2; intvec d = 4, 1; setBaseMultigrading(M, L); multiDegBasis(d); ==> _[1]=xz3 ==> _[2]=yz6 ==> _[3]=x6y ==> _[4]=x3z attrib(_, "ZeroPart"); ==> _[1]=y2z4 ==> _[2]=xyz ==> _[3]=x4y2 kill R, M, d; ring R = 0, (x, y, z), dp; qring Q = std(ideal( y^6+ x*y^3*z-x^2*z^2 )); intmat M[2][3] = 1, 1, 2, 2, 1, 1; // intmat T[2][1] = 0, 2; setBaseMultigrading(M); // BUG???? intvec d = 6, 6; multiDegBasis(d); ==> _[1]=x2z2 ==> _[2]=xy3z attrib(_, "ZeroPart"); ==> _[1]=0 kill R, Q, M, d; ring R = 0, (x, y, z), dp; qring Q = std(ideal( x*z^3 - y *z^6, x*y*z - x^4*y^2 )); intmat M[2][3] = 1, -2, 1, 1, 1, 0; intmat T[2][1] = 0, 2; intvec d = 4, 1; setBaseMultigrading(M, T); // BUG???? multiDegBasis(d); ==> _[1]=xz3 ==> _[2]=x6y ==> _[3]=x3z attrib(_, "ZeroPart"); ==> _[1]=y2z4 ==> _[2]=xyz ```