source: git/kernel/kpolys.cc @ 74d48c

fieker-DuValspielwiese
Last change on this file since 74d48c was 67d4b5, checked in by Burcin Erocal <burcin@…>, 13 years ago
Convert kernel/kpolys.cc to use libpolys, some pGetComp calls remaining.
  • Property mode set to 100644
File size: 3.1 KB
Line 
1/* Returns TRUE if
2     * LM(p) | LM(lcm)
3     * LC(p) | LC(lcm) only if ring
4     * Exists i, j:
5         * LE(p, i)  != LE(lcm, i)
6         * LE(p1, i) != LE(lcm, i)   ==> LCM(p1, p) != lcm
7         * LE(p, j)  != LE(lcm, j)
8         * LE(p2, j) != LE(lcm, j)   ==> LCM(p2, p) != lcm
9*/
10BOOLEAN pCompareChain (poly p,poly p1,poly p2,poly lcm, const ring R = currRing)
11{
12  int k, j;
13
14  if (lcm==NULL) return FALSE;
15
16  for (j=(R->N); j; j--)
17    if ( p_GetExp(p,j, R) >  p_GetExp(lcm,j, R)) return FALSE;
18  if ( pGetComp(p) !=  pGetComp(lcm)) return FALSE;
19  for (j=(R->N); j; j--)
20  {
21    if (p_GetExp(p1,j, R)!=p_GetExp(lcm,j, R))
22    {
23      if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
24      {
25        for (k=(R->N); k>j; k--)
26        {
27          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
28          && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
29            return TRUE;
30        }
31        for (k=j-1; k; k--)
32        {
33          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
34          && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
35            return TRUE;
36        }
37        return FALSE;
38      }
39    }
40    else if (p_GetExp(p2,j, R)!=p_GetExp(lcm,j, R))
41    {
42      if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
43      {
44        for (k=(R->N); k>j; k--)
45        {
46          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
47          && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
48            return TRUE;
49        }
50        for (k=j-1; k!=0 ; k--)
51        {
52          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
53          && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
54            return TRUE;
55        }
56        return FALSE;
57      }
58    }
59  }
60  return FALSE;
61}
62#ifdef HAVE_RATGRING
63BOOLEAN pCompareChainPart (poly p,poly p1,poly p2,poly lcm,
64                const ring R = currRing)
65{
66  int k, j;
67
68  if (lcm==NULL) return FALSE;
69
70  for (j=R->real_var_end; j>=R->real_var_start; j--)
71    if ( p_GetExp(p,j, R) >  p_GetExp(lcm,j, R)) return FALSE;
72  if ( pGetComp(p) !=  pGetComp(lcm)) return FALSE;
73  for (j=R->real_var_end; j>=R->real_var_start; j--)
74  {
75    if (p_GetExp(p1,j, R)!=p_GetExp(lcm,j, R))
76    {
77      if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
78      {
79        for (k=(R->N); k>j; k--)
80        for (k=R->real_var_end; k>j; k--)
81        {
82          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
83          && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
84            return TRUE;
85        }
86        for (k=j-1; k>=R->real_var_start; k--)
87        {
88          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
89          && (p_GetExp(p2,k, R)!=p_GetExp(lcm,k, R)))
90            return TRUE;
91        }
92        return FALSE;
93      }
94    }
95    else if (p_GetExp(p2,j, R)!=p_GetExp(lcm,j, R))
96    {
97      if (p_GetExp(p,j, R)!=p_GetExp(lcm,j, R))
98      {
99        for (k=R->real_var_end; k>j; k--)
100        {
101          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
102          && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
103            return TRUE;
104        }
105        for (k=j-1; k>=R->real_var_start; k--)
106        {
107          if ((p_GetExp(p,k, R)!=p_GetExp(lcm,k, R))
108          && (p_GetExp(p1,k, R)!=p_GetExp(lcm,k, R)))
109            return TRUE;
110        }
111        return FALSE;
112      }
113    }
114  }
115  return FALSE;
116}
117#endif
118
Note: See TracBrowser for help on using the repository browser.