Macaulay2 Engine
Loading...
Searching...
No Matches

◆ spair_set_lead_spoly()

void gbA::spair_set_lead_spoly ( spair * p)
private

Definition at line 1276 of file gb-default.cpp.

1277{
1278 gbvector *ltsyz = nullptr;
1279 POLY f, g;
1280 if (p->type > SPAIR::SPAIR_SKEW)
1281 {
1282 R->gbvector_remove(p->lead_of_spoly);
1283 p->lead_of_spoly = nullptr;
1284 return;
1285 }
1286 f = gb[p->x.pair.i]->g;
1287 if (p->type == SPAIR::SPAIR_SKEW)
1288 {
1289 const int *mon = R->skew_monomial_var(p->x.pair.j);
1290 R->gbvector_mult_by_term(
1291 _F, _Fsyz, R->one(), mon, f.f, nullptr, p->lead_of_spoly, ltsyz);
1292 }
1293 else if (p->type == SPAIR::SPAIR_GCD_ZZ)
1294 {
1295 g = gb[p->x.pair.j]->g;
1296 R->gbvector_combine_lead_terms_ZZ(
1297 _F, _Fsyz, f.f, nullptr, g.f, nullptr, p->lead_of_spoly, ltsyz);
1298 }
1299 else
1300 {
1301 g = gb[p->x.pair.j]->g;
1302 R->gbvector_cancel_lead_terms(
1303 _F, _Fsyz, f.f, nullptr, g.f, nullptr, p->lead_of_spoly, ltsyz);
1304 }
1305 if (p->lead_of_spoly != nullptr)
1306 {
1307 gbvector *tmp = p->lead_of_spoly->next;
1308 p->lead_of_spoly->next = nullptr;
1309 R->gbvector_remove(tmp);
1310 }
1311}
GBRing * R
const FreeModule * _F
const FreeModule * _Fsyz
@ SPAIR_GCD_ZZ
@ SPAIR_SKEW
void gb(IntermediateBasis &F, int n)
int p
#define POLY(q)
Definition poly.cpp:23
gbvector * f
Definition gbring.hpp:98

References _F, _Fsyz, POLY::f, gb(), p, POLY, R, SPAIR_GCD_ZZ, and SPAIR_SKEW.

Referenced by spair_set_insert().