My Project  debian-1:4.1.1-p2+ds-4build3
Functions
kpolys.cc File Reference
#include "kernel/mod2.h"
#include "omalloc/omalloc.h"
#include "kernel/polys.h"

Go to the source code of this file.

Functions

BOOLEAN pCompareChain (poly p, poly p1, poly p2, poly lcm, const ring R)
 Returns TRUE if. More...
 
BOOLEAN pCompareChainPart (poly p, poly p1, poly p2, poly lcm, const ring R)
 

Function Documentation

◆ pCompareChain()

BOOLEAN pCompareChain ( poly  p,
poly  p1,
poly  p2,
poly  lcm,
const ring  R = currRing 
)

Returns TRUE if.

  • LM(p) | LM(lcm)
  • LC(p) | LC(lcm) only if ring
  • Exists i, j:
    • LE(p, i) != LE(lcm, i)
    • LE(p1, i) != LE(lcm, i) ==> LCM(p1, p) != lcm
    • LE(p, j) != LE(lcm, j)
    • LE(p2, j) != LE(lcm, j) ==> LCM(p2, p) != lcm

Definition at line 20 of file kpolys.cc.

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 }

◆ pCompareChainPart()

BOOLEAN pCompareChainPart ( poly  p,
poly  p1,
poly  p2,
poly  lcm,
const ring  R 
)

Definition at line 74 of file kpolys.cc.

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 }
FALSE
#define FALSE
Definition: auxiliary.h:94
pGetComp
#define pGetComp(p)
Component.
Definition: polys.h:37
p_GetExp
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:469
j
int j
Definition: facHensel.cc:105
k
int k
Definition: cfEzgcd.cc:92
TRUE
#define TRUE
Definition: auxiliary.h:98
NULL
#define NULL
Definition: omList.c:10
lcm
int lcm(unsigned long *l, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
Definition: minpoly.cc:709
R
#define R
Definition: sirandom.c:26
p
int p
Definition: cfModGcd.cc:4019