My Project  debian-1:4.1.1-p2+ds-4build4
pp_Mult_nn__T.cc
Go to the documentation of this file.
1 /****************************************
2 * Computer Algebra System SINGULAR *
3 ****************************************/
4 /***************************************************************
5  * File: pp_Mult_nn__Template.cc
6  * Purpose: template for pp_Mult_nn
7  * Author: obachman (Olaf Bachmann)
8  * Created: 8/00
9  *******************************************************************/
10 
11 /***************************************************************
12  *
13  * Returns: p*n
14  * Const: p, n
15  *
16  ***************************************************************/
17 LINKAGE poly pp_Mult_nn__T(poly p, const number n, const ring r)
18 {
19  pAssume(!n_IsZero__T(n,r->cf));
20  p_Test(p, r);
21  if (p == NULL) return NULL;
22  spolyrec rp;
23 #ifdef HAVE_ZERODIVISORS
24  rp.next = NULL;
25 #endif
26  poly q = &rp;
27  omBin bin = r->PolyBin;
28  DECLARE_LENGTH(const unsigned long length = r->ExpL_Size);
29 
30  do
31  {
32 #ifndef HAVE_ZERODIVISORS
33  p_AllocBin(pNext(q), bin, r);
34  pIter(q);
35  number nc = pGetCoeff(p);
36  pSetCoeff0(q, n_Mult__T(n, nc, r->cf));
37  p_MemCopy__T(q->exp, p->exp, length);
38 #else
39  number nc = pGetCoeff(p);
40  number tmp = n_Mult__T(n, nc, r->cf);
41  if (! n_IsZero__T(tmp,r->cf))
42  {
43  p_AllocBin(pNext(q), bin, r);
44  pIter(q);
45  pSetCoeff0(q, tmp);
46  p_MemCopy__T(q->exp, p->exp, length);
47  }
48  else
49  n_Delete__T(&tmp,r->cf);
50 #endif
51  pIter(p);
52  }
53  while (p != NULL);
54  pNext(q) = NULL;
55 
56  p_Test(rp.next, r);
57  return rp.next;
58 }
59 
60 
int p
Definition: cfModGcd.cc:4019
static BOOLEAN length(leftv result, leftv arg)
Definition: interval.cc:267
#define LINKAGE
Definition: mod2.h:141
poly next
Definition: monomials.h:31
#define pIter(p)
Definition: monomials.h:44
#define pNext(p)
Definition: monomials.h:43
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
Definition: monomials.h:51
#define pSetCoeff0(p, n)
Definition: monomials.h:66
#define p_AllocBin(p, bin, r)
Definition: monomials.h:255
#define pAssume(cond)
Definition: monomials.h:97
#define NULL
Definition: omList.c:10
omBin_t * omBin
Definition: omStructs.h:12
#define n_Delete__T(n, r)
Definition: p_polys.cc:4782
#define p_Test(p, r)
Definition: p_polys.h:163
LINKAGE poly pp_Mult_nn__T(poly p, const number n, const ring r)