My Project  UNKNOWN_GIT_VERSION
kpolys.cc
Go to the documentation of this file.
1 
2 
3 
4 #include "kernel/mod2.h"
5 
6 #include "omalloc/omalloc.h"
7 
8 #include "kernel/polys.h"
9 
10 
11 /* Returns TRUE if
12  * LM(p) | LM(lcm)
13  * LC(p) | LC(lcm) only if ring
14  * Exists i, j:
15  * LE(p, i) != LE(lcm, i)
16  * LE(p1, i) != LE(lcm, i) ==> LCM(p1, p) != lcm
17  * LE(p, j) != LE(lcm, j)
18  * LE(p2, j) != LE(lcm, j) ==> LCM(p2, p) != lcm
19 */
20 BOOLEAN pCompareChain (poly p,poly p1,poly p2,poly lcm, const ring R)
21 {
22  int k, j;
23 
24  if (lcm==NULL) return FALSE;
25 
26  for (j=(R->N); j; j--)
27  if ( p_GetExp(p,j, R) > p_GetExp(lcm,j, R)) return FALSE;
28  if ( pGetComp(p) != pGetComp(lcm)) return FALSE;
29  for (j=(R->N); j; j--)
30  {
31  if (p_GetExp(p1,j, R)!=p_GetExp(lcm,j, R))
32  {
33  if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
34  {
35  for (k=(R->N); k>j; k--)
36  {
37  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
38  && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
39  return TRUE;
40  }
41  for (k=j-1; k; k--)
42  {
43  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
44  && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
45  return TRUE;
46  }
47  return FALSE;
48  }
49  }
50  else if (p_GetExp(p2,j, R)!=p_GetExp(lcm,j, R))
51  {
52  if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
53  {
54  for (k=(R->N); k>j; k--)
55  {
56  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
57  && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
58  return TRUE;
59  }
60  for (k=j-1; k!=0 ; k--)
61  {
62  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
63  && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
64  return TRUE;
65  }
66  return FALSE;
67  }
68  }
69  }
70  return FALSE;
71 }
72 
73 #ifdef HAVE_RATGRING
74 BOOLEAN pCompareChainPart (poly p,poly p1,poly p2,poly lcm, const ring R)
75 {
76  int k, j;
77 
78  if (lcm==NULL) return FALSE;
79 
80  for (j=R->real_var_end; j>=R->real_var_start; j--)
81  if ( p_GetExp(p,j, R) > p_GetExp(lcm,j, R)) return FALSE;
82  if ( pGetComp(p) != pGetComp(lcm)) return FALSE;
83  for (j=R->real_var_end; j>=R->real_var_start; j--)
84  {
85  if (p_GetExp(p1,j, R)!=p_GetExp(lcm,j, R))
86  {
87  if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
88  {
89  for (k=(R->N); k>j; k--)
90  for (k=R->real_var_end; k>j; k--)
91  {
92  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
93  && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
94  return TRUE;
95  }
96  for (k=j-1; k>=R->real_var_start; k--)
97  {
98  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
99  && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
100  return TRUE;
101  }
102  return FALSE;
103  }
104  }
105  else if (p_GetExp(p2,j, R)!=p_GetExp(lcm,j, R))
106  {
107  if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
108  {
109  for (k=R->real_var_end; k>j; k--)
110  {
111  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
112  && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
113  return TRUE;
114  }
115  for (k=j-1; k>=R->real_var_start; k--)
116  {
117  if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
118  && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
119  return TRUE;
120  }
121  return FALSE;
122  }
123  }
124  }
125  return FALSE;
126 }
127 #endif
128 
int BOOLEAN
Definition: auxiliary.h:85
#define TRUE
Definition: auxiliary.h:98
#define FALSE
Definition: auxiliary.h:94
int k
Definition: cfEzgcd.cc:92
int p
Definition: cfModGcd.cc:4019
int j
Definition: facHensel.cc:105
BOOLEAN pCompareChainPart(poly p, poly p1, poly p2, poly lcm, const ring R)
Definition: kpolys.cc:74
BOOLEAN pCompareChain(poly p, poly p1, poly p2, poly lcm, const ring R)
Returns TRUE if.
Definition: kpolys.cc:20
int lcm(unsigned long *l, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
Definition: minpoly.cc:709
#define NULL
Definition: omList.c:10
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
Definition: p_polys.h:470
Compatiblity layer for legacy polynomial operations (over currRing)
#define pGetComp(p)
Component.
Definition: polys.h:37
#define R
Definition: sirandom.c:26