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

◆ isGoodPair()

bool isGoodPair ( const Pair & pair,
const IntermediateBasis & F,
const Pairs & B,
int n )

Definition at line 217 of file franzi-gb.cpp.

221{
222 FunctionPair fp = FunctionPair(pair, F, n);
223 if (!fp.good)
224 {
225 return false;
226 }
227
228 // both polynomials are monomials, so their S polynomial reduces to 0
229 if (fp.g->size() == 1 && fp.f->size() == 1)
230 {
231 // cout << "m ";
232 return false;
233 }
234
235 brMonomial g = fp.g->LT();
236 brMonomial f = fp.f->LT();
237 if (BRP::isRelativelyPrime(g, f))
238 {
239 return false;
240 }
241
242 int i = pair.i;
243 int j = pair.j;
244
245 brMonomial lcm = pair.lcm;
246 IntermediateBasis::const_iterator end = F.end();
247 for (IntermediateBasis::const_iterator it = F.begin(); it != end; ++it)
248 {
249 int k = it->first;
250 const BRP *K = &(it->second);
251
252 if ((k != i && k != j && BRP::isDivisibleBy(lcm, K->LT()) &&
253 !inList(i, k, B, F) && !inList(j, k, B, F)))
254 {
255 return false;
256 }
257 }
258
259 // cout << "good pair ";
260 return true;
261}
static bool isDivisibleBy(const brMonomial &a, const brMonomial &b)
brMonomial LT() const
static bool isRelativelyPrime(const brMonomial &a, const brMonomial &b)
unsigned int size() const
Boolean (F_2-coefficient) polynomial stored as an ordered list of square-free monomials.
const BRP * g
const BRP * f
Materialised (f, g) pair of BRP polynomials referenced by a Pair index record.
unsigned long brMonomial
bool inList(int i, int j, const Pairs &B, const IntermediateBasis &F)
TermIterator< Nterm > end(Nterm *)
Definition ringelem.cpp:5

References end(), FunctionPair::f, FunctionPair::g, FunctionPair::good, inList(), BRP::isDivisibleBy(), BRP::isRelativelyPrime(), BRP::LT(), and BRP::size().

Referenced by gb().