My Project
Toggle main menu visibility
Loading...
Searching...
No Matches
libpolys
polys
templates
p_Merge_q__T.cc
Go to the documentation of this file.
1
/****************************************
2
* Computer Algebra System SINGULAR *
3
****************************************/
4
/***************************************************************
5
* File: p_Merge_q__Template.cc
6
* Purpose: template for p_Add_q
7
* Author: obachman (Olaf Bachmann)
8
* Created: 8/00
9
*******************************************************************/
10
11
/***************************************************************
12
*
13
* Returns: p merged with q
14
* Destroys: p, q
15
*
16
***************************************************************/
17
LINKAGE
poly
p_Merge_q__T
(poly
p
, poly q,
const
ring r)
18
{
19
assume
(
p
!=
NULL
&& q !=
NULL
);
20
p_Test
(
p
, r);
21
p_Test
(q, r);
22
#if PDEBUG > 0
23
int
l
=
pLength
(
p
) +
pLength
(q);
24
#endif
25
26
spolyrec
rp;
27
poly a = &rp;
28
DECLARE_LENGTH(
const
unsigned
long
length
= r->CmpL_Size);
29
DECLARE_ORDSGN(
const
long
* ordsgn = r->ordsgn);
30
31
Top:
// compare p and q w.r.t. monomial ordering
32
p_MemCmp__T(
p
->exp, q->exp,
length
, ordsgn,
goto
Equal
,
goto
Greater
,
goto
Smaller);
33
34
Equal
:
35
// should never get here
36
dReportError
(
"Equal monomials in p_Merge_q"
);
37
return
NULL
;
38
39
Greater
:
40
a =
pNext
(a) =
p
;
41
pIter
(
p
);
42
if
(
p
==
NULL
) {
pNext
(a) = q;
goto
Finish;}
43
goto
Top;
44
45
Smaller:
46
a =
pNext
(a) = q;
47
pIter
(q);
48
if
(q==
NULL
) {
pNext
(a) =
p
;
goto
Finish;}
49
goto
Top;
50
51
Finish:
52
53
p_Test
(
pNext
(&rp), r);
54
#if PDEBUG > 0
55
pAssume1
(
l
-
pLength
(
pNext
(&rp)) == 0);
56
#endif
57
return
pNext
(&rp);
58
}
59
l
int l
Definition
cfEzgcd.cc:100
p
int p
Definition
cfModGcd.cc:4086
Equal
static BOOLEAN Equal(number a, number b, const coeffs)
Definition
flintcf_Q.cc:381
Greater
static bool Greater(mono_type m1, mono_type m2)
Definition
interpolation.cc:285
length
static BOOLEAN length(leftv result, leftv arg)
Definition
interval.cc:257
assume
#define assume(x)
Definition
mod2.h:389
LINKAGE
#define LINKAGE
Definition
mod2.h:140
dReportError
int dReportError(const char *fmt,...)
Definition
dError.cc:44
pIter
#define pIter(p)
Definition
monomials.h:37
pNext
#define pNext(p)
Definition
monomials.h:36
pAssume1
#define pAssume1(cond)
Definition
monomials.h:171
spolyrec
Definition
monomials.h:23
NULL
#define NULL
Definition
omList.c:12
p_Merge_q__T
LINKAGE poly p_Merge_q__T(poly p, poly q, const ring r)
Definition
p_Merge_q__T.cc:17
pLength
static int pLength(poly a)
Definition
p_polys.h:190
p_Test
#define p_Test(p, r)
Definition
p_polys.h:161
Generated on
for My Project by
doxygen 1.17.0
for
Singular