My Project  UNKNOWN_GIT_VERSION
Functions
p_Mult_mm__T.cc File Reference

Go to the source code of this file.

Functions

LINKAGE poly p_Mult_mm__T (poly p, const poly m, const ring ri)
 

Function Documentation

◆ p_Mult_mm__T()

LINKAGE poly p_Mult_mm__T ( poly  p,
const poly  m,
const ring  ri 
)

Definition at line 15 of file p_Mult_mm__T.cc.

15  : p
16  *
17  ***************************************************************/
18 LINKAGE poly p_Mult_mm__T(poly p, const poly m, const ring ri)
19 {
20  p_Test(p, ri);
21  p_LmTest(m, ri);
22  pAssume(m != NULL);
23  assume(p!=NULL);
24  poly q = p;
25  number ln = pGetCoeff(m);
26  number pn;
27  DECLARE_LENGTH(const unsigned long length = ri->ExpL_Size);
28  const unsigned long* m_e = m->exp;
29  pAssume(!n_IsZero__T(ln,ri->cf));
30 
31 #ifdef HAVE_ZERODIVISORS
32  poly before = p;
33 #endif
34  while (p != NULL)
35  {
36  pn = pGetCoeff(p);
37  number tmp = n_Mult__T(ln, pn, ri->cf);
38 #ifdef HAVE_ZERODIVISORS
39  if (n_IsZero__T(tmp, ri->cf))
40  {
41  n_Delete__T(&tmp, ri->cf);
42  if (before == p)
43  {
44  p = p_LmDeleteAndNext(p, ri);
45  before = p;
46  q = p;
47  }
48  else
49  {
50  p = p_LmDeleteAndNext(p, ri);
51  pNext(before) = p;
52  }
53  }
54  else
55 #endif
56  {
57  pSetCoeff0(p, tmp);
58  n_Delete__T(&pn, ri->cf);
59  p_MemAdd__T(p->exp, m_e, length);
60  p_MemAddAdjust__T(p, ri);
61 #ifdef HAVE_ZERODIVISORS
62  before = p;
63 #endif
64  p = pNext(p);
65  }
66  }
p_LmDeleteAndNext
static poly p_LmDeleteAndNext(poly p, const ring r)
Definition: p_polys.h:713
pAssume
#define pAssume(cond)
Definition: monomials.h:87
p_Mult_mm__T
LINKAGE poly p_Mult_mm__T(poly p, const poly m, const ring ri)
Definition: p_Mult_mm__T.cc:15
length
static BOOLEAN length(leftv result, leftv arg)
Definition: interval.cc:263
p_Test
#define p_Test(p, r)
Definition: p_polys.h:156
n_Delete__T
#define n_Delete__T(n, r)
Definition: p_polys.cc:4790
p_LmTest
#define p_LmTest(p, r)
Definition: p_polys.h:157
pSetCoeff0
#define pSetCoeff0(p, n)
Definition: monomials.h:57
m
int m
Definition: cfEzgcd.cc:121
assume
#define assume(x)
Definition: mod2.h:384
NULL
#define NULL
Definition: omList.c:9
p
int p
Definition: cfModGcd.cc:4019
pGetCoeff
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
Definition: monomials.h:42
LINKAGE
#define LINKAGE
Definition: mod2.h:137
pNext
#define pNext(p)
Definition: monomials.h:34