My Project
debian-1:4.1.1-p2+ds-4
libpolys
polys
templates
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
pAssume
#define pAssume(cond)
Definition:
monomials.h:93
length
static BOOLEAN length(leftv result, leftv arg)
Definition:
interval.cc:267
p_Test
#define p_Test(p, r)
Definition:
p_polys.h:155
spolyrec::next
poly next
Definition:
monomials.h:29
pIter
#define pIter(p)
Definition:
monomials.h:41
spolyrec
Definition:
monomials.h:27
pp_Mult_nn__T
LINKAGE poly pp_Mult_nn__T(poly p, const number n, const ring r)
Definition:
pp_Mult_nn__T.cc:14
n_Delete__T
#define n_Delete__T(n, r)
Definition:
p_polys.cc:4776
omBin
omBin_t * omBin
Definition:
omStructs.h:11
pSetCoeff0
#define pSetCoeff0(p, n)
Definition:
monomials.h:63
NULL
#define NULL
Definition:
omList.c:9
p
int p
Definition:
cfModGcd.cc:4019
p_AllocBin
#define p_AllocBin(p, bin, r)
Definition:
monomials.h:248
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:48
LINKAGE
#define LINKAGE
Definition:
mod2.h:137
pNext
#define pNext(p)
Definition:
monomials.h:40
Generated on Fri Jan 10 2020 08:17:41 for My Project by
doxygen 1.8.16
for
Singular debian-1:4.1.1-p2+ds-4