MCPcopy Create free account
hub / github.com/Singular/Singular / scDimInt

Function scDimInt

kernel/combinatorics/hdegree.cc:78–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76}
77
78int scDimInt(ideal S, ideal Q)
79{
80 id_Test(S, currRing);
81 if( Q!=NULL ) id_Test(Q, currRing);
82
83 int mc;
84 hexist = hInit(S, Q, &hNexist);
85 if (!hNexist)
86 return (currRing->N);
87 hwork = (scfmon)omAlloc(hNexist * sizeof(scmon));
88 hvar = (varset)omAlloc(((currRing->N) + 1) * sizeof(int));
89 hpure = (scmon)omAlloc((1 + ((currRing->N) * (currRing->N))) * sizeof(int));
90 mc = hisModule;
91 if (!mc)
92 {
93 hrad = hexist;
94 hNrad = hNexist;
95 }
96 else
97 hrad = (scfmon)omAlloc(hNexist * sizeof(scmon));
98 radmem = hCreate((currRing->N) - 1);
99 hCo = (currRing->N) + 1;
100 loop
101 {
102 if (mc)
103 hComp(hexist, hNexist, mc, hrad, &hNrad);
104 if (hNrad)
105 {
106 hNvar = (currRing->N);
107 hRadical(hrad, &hNrad, hNvar);
108 hSupp(hrad, hNrad, hvar, &hNvar);
109 if (hNvar)
110 {
111 memset(hpure, 0, ((currRing->N) + 1) * sizeof(int));
112 hPure(hrad, 0, &hNrad, hvar, hNvar, hpure, &hNpure);
113 hLexR(hrad, hNrad, hvar, hNvar);
114 hDimSolve(hpure, hNpure, hrad, hNrad, hvar, hNvar);
115 }
116 }
117 else
118 {
119 hCo = 0;
120 break;
121 }
122 mc--;
123 if (mc <= 0)
124 break;
125 }
126 hKill(radmem, (currRing->N) - 1);
127 omFreeSize((ADDRESS)hpure, (1 + ((currRing->N) * (currRing->N))) * sizeof(int));
128 omFreeSize((ADDRESS)hvar, ((currRing->N) + 1) * sizeof(int));

Callers 3

dimFunction · 0.85
scDimIntRingFunction · 0.85
scKBaseFunction · 0.85

Calls 9

hInitFunction · 0.85
hCreateFunction · 0.85
hCompFunction · 0.85
hRadicalFunction · 0.85
hSuppFunction · 0.85
hPureFunction · 0.85
hLexRFunction · 0.85
hDimSolveFunction · 0.85
ifFunction · 0.50

Tested by

no test coverage detected