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

Function idSectWithElim

kernel/ideals.cc:132–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130
131
132static ideal idSectWithElim (ideal h1,ideal h2, GbVariant alg)
133// does not destroy h1,h2
134{
135 if (TEST_OPT_PROT) PrintS("intersect by elimination method\n");
136 assume(!idIs0(h1));
137 assume(!idIs0(h2));
138 assume(IDELEMS(h1)<=IDELEMS(h2));
139 assume(id_RankFreeModule(h1,currRing)==0);
140 assume(id_RankFreeModule(h2,currRing)==0);
141 // add a new variable:
142 int j;
143 ring origRing=currRing;
144 ring r=rCopy0(origRing);
145 r->N++;
146 r->block0[0]=1;
147 r->block1[0]= r->N;
148 omFree(r->order);
149 r->order=(rRingOrder_t*)omAlloc0(3*sizeof(rRingOrder_t));
150 r->order[0]=ringorder_dp;
151 r->order[1]=ringorder_C;
152 char **names=(char**)omAlloc0(rVar(r) * sizeof(char_ptr));
153 for (j=0;j<r->N-1;j++) names[j]=r->names[j];
154 names[r->N-1]=omStrDup("@");
155 omFree(r->names);
156 r->names=names;
157 rComplete(r,TRUE);
158 // fetch h1, h2
159 ideal h;
160 h1=idrCopyR(h1,origRing,r);
161 h2=idrCopyR(h2,origRing,r);
162 // switch to temp. ring r
163 rChangeCurrRing(r);
164 // create 1-t, t
165 poly omt=p_One(currRing);
166 p_SetExp(omt,r->N,1,currRing);
167 p_Setm(omt,currRing);
168 poly t=p_Copy(omt,currRing);
169 omt=p_Neg(omt,currRing);
170 omt=p_Add_q(omt,pOne(),currRing);
171 // compute (1-t)*h1
172 h1=(ideal)mp_MultP((matrix)h1,omt,currRing);
173 // compute t*h2
174 h2=(ideal)mp_MultP((matrix)h2,pCopy(t),currRing);
175 // (1-t)h1 + t*h2
176 h=idInit(IDELEMS(h1)+IDELEMS(h2),1);
177 int l;
178 for (l=IDELEMS(h1)-1; l>=0; l--)
179 {
180 h->m[l] = h1->m[l]; h1->m[l]=NULL;
181 }
182 j=IDELEMS(h1);
183 for (l=IDELEMS(h2)-1; l>=0; l--)
184 {
185 h->m[l+j] = h2->m[l]; h2->m[l]=NULL;
186 }
187 idDelete(&h1);
188 idDelete(&h2);
189 // eliminate t:

Callers 1

idSectFunction · 0.85

Calls 15

PrintSFunction · 0.85
idIs0Function · 0.85
rCopy0Function · 0.85
omAlloc0Function · 0.85
rVarFunction · 0.85
rCompleteFunction · 0.85
idrCopyRFunction · 0.85
rChangeCurrRingFunction · 0.85
p_OneFunction · 0.85
p_SetExpFunction · 0.85
p_SetmFunction · 0.85
p_CopyFunction · 0.85

Tested by

no test coverage detected