2607 if(
OPT__DEBUG ) { Verify(); syz_checker.Verify(); }
2625 if (syzterm !=
NULL)
2648 if(
OPT__DEBUG ) { Verify(); syz_checker.Verify(); }
2651 const BOOLEAN to_check = (syz_checker.IsNonempty());
2662 while( itr.MoveNext() )
2664 assume( itr.Current().CheckLT( L ) );
2666 const poly p = itr.Current().lt();
2667 const int k = itr.Current().label();
2678 if (syzterm !=
NULL && (k == c))
2684 PrintS(
"_FindReducer::Test SYZTERM: q == syzterm !:((, syzterm is: ");
2685 dPrint(syzterm, r, r, 0);
2688 assume( itr.Current().CheckLT( L ) );
2693 if( to_check && syz_checker.IsDivisible(q) )
2698 PrintS(
"_FindReducer::Test LS: q is divisible by LS[?] !:((: ");
2701 assume( itr.Current().CheckLT( L ) );
2719 if(
OPT__DEBUG ) { Verify(); syz_checker.Verify(); }
2724 assume( itr.Current().CheckLT( L ) );
2816 if(
OPT__DEBUG ) { Verify(); syz_checker.Verify(); }
static FORCE_INLINE BOOLEAN n_IsOne(number n, const coeffs r)
TRUE iff 'n' represents the one element.
static poly p_Mult_mm(poly p, poly m, const ring r)
static unsigned long p_SetComp(poly p, unsigned long c, ring r)
#define UNLIKELY(expression)
const int OPT__DEBUG
output all the intermediate states
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
static void p_LmFree(poly p, ring)
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
void PrintS(const char *s)
BOOLEAN p_EqualPolys(poly p1, poly p2, const ring r)
static void p_Delete(poly *p, const ring r)
static void p_ExpVectorDiff(poly pr, poly p1, poly p2, const ring r)
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
const ring m_rBaseRing
global base ring
static void p_Setm(poly p, const ring r)
#define p_SetCoeff0(p, n, r)
static void p_ExpVectorSum(poly pr, poly p1, poly p2, const ring r)
static BOOLEAN p_ExpVectorEqual(poly p1, poly p2, const ring r1, const ring r2)
static poly p_New(const ring, omBin bin)
void dPrint(const ideal id, const ring lmRing=currRing, const ring tailRing=currRing, const int nTerms=0)
prints an ideal, optionally with details
static poly p_Mult_q(poly p, poly q, const ring r)