My Project
Toggle main menu visibility
Loading...
Searching...
No Matches
Singular
wrapper.cc
Go to the documentation of this file.
1
#include "
kernel/mod2.h
"
2
#include "
polys/monomials/ring.h
"
3
4
#include "
kernel/polys.h
"
5
#include "
kernel/GBEngine/kstd1.h
"
6
#include "
kernel/ideals.h
"
7
#include "
kernel/GBEngine/janet.h
"
8
9
#include "
Singular/subexpr.h
"
10
11
//extern int (*ListGreatMove)(jList *,jList *,poly);
12
13
static
BOOLEAN
jInitBasis
(ideal
v
,
jList
**TT,
jList
**QQ)
14
{
15
if
(
rHasLocalOrMixedOrdering
(
currRing
))
16
{
17
WerrorS
(
"janet only for well-orderings"
);
18
return
TRUE
;
19
}
20
21
Initialization
(
rOrdStr
(
currRing
));
22
23
jList
*
Q
=(
jList
*)
GCM
(
sizeof
(
jList
));
24
Q
->root=
NULL
;
25
26
jList
*
T
=(
jList
*)
GCM
(
sizeof
(
jList
));
27
T
->root=
NULL
;
28
29
for
(
int
i
=0;
i
<
IDELEMS
(
v
);
i
++)
30
{
31
if
(
v
->m[
i
]!=
NULL
)
32
{
33
Poly
*beg=
NewPoly
(
pCopy
(
v
->m[
i
]));
34
35
InitHistory
(beg);
36
InitProl
(beg);
37
InitLead
(beg);
38
39
InsertInCount
(
Q
,beg);
40
}
41
}
42
43
BOOLEAN
r= !(
ComputeBasis
(
T
,
Q
));
44
*TT=
T
;
45
*QQ=
Q
;
46
return
r;
47
}
48
49
/// flag: 0: JB, 1: SB
50
BOOLEAN
jjStdJanetBasis
(
leftv
res
,
leftv
v
,
int
flag)
51
{
52
ideal
result
;
53
54
jList
*
T
;
55
jList
*
Q
;
56
ideal I=(ideal)
v
->Data();
57
BOOLEAN
is_zero=
TRUE
;
58
for
(
int
i
=0;
i
<
IDELEMS
(I);
i
++)
59
{
60
if
((I->m[
i
]!=
NULL
)&& (
pIsConstant
(I->m[
i
])))
61
{
62
goto
zero;
63
}
64
else
65
is_zero=
FALSE
;
66
}
67
if
(is_zero)
68
goto
zero;
69
if
(!
jInitBasis
(I,&
T
,&
Q
))
70
{
71
int
dpO=(strstr(
rOrdStr
(
currRing
),
"dp"
)!=
NULL
);
72
int
ideal_length;
73
if
(flag==1)
74
ideal_length= dpO ?
GB_length
() :
CountList
(
T
);
75
else
76
ideal_length=
CountList
(
T
);
77
78
result
=
idInit
(ideal_length,1);
79
80
int
ideal_index=0;
81
82
LCI
iT=
T
->root;
83
84
while
(iT)
85
{
86
pTest
(iT->info->root);
87
if
((flag==1) && dpO)
88
{
89
//if (pTotaldegree(iT->info->lead) == pTotaldegree(iT->info->history))
90
if
(
p_Deg
(iT->info->lead,
currRing
) ==
p_Deg
(iT->info->history,
currRing
))
91
{
92
result
->m[ideal_length-ideal_index-1]=
pCopy
(iT->info->root);
93
if
(!
nGreaterZero
(
pGetCoeff
(iT->info->root)))
94
result
->m[ideal_length-ideal_index-1]
95
=
pNeg
(
result
->m[ideal_length-ideal_index-1]);
96
97
ideal_index++;
98
}
99
}
100
else
101
{
102
result
->m[ideal_length-ideal_index-1]=
pCopy
(iT->info->root);
103
if
(!
nGreaterZero
(
pGetCoeff
(iT->info->root)))
104
result
->m[ideal_length-ideal_index-1]
105
=
pNeg
(
result
->m[ideal_length-ideal_index-1]);
106
107
ideal_index++;
108
}
109
iT=iT->next;
110
}
111
112
if
((flag==1) && (dpO==0))
113
{
114
//Print ("interred\n");
115
result
=
kInterRedOld
(
result
);
116
idSkipZeroes
(
result
);
117
}
118
res
->data = (
char
*)
result
;
119
res
->rtyp =
IDEAL_CMD
;
120
DestroyList
(
Q
);
121
DestroyList
(
T
);
122
return
FALSE
;
123
}
124
else
125
return
TRUE
;
126
127
zero:
128
result
=
idInit
(1,1);
129
if
(!is_zero)
result
->m[0]=
pOne
();
130
res
->data = (
char
*)
result
;
131
res
->rtyp =
IDEAL_CMD
;
132
return
FALSE
;
133
}
BOOLEAN
int BOOLEAN
Definition
auxiliary.h:88
TRUE
#define TRUE
Definition
auxiliary.h:101
FALSE
#define FALSE
Definition
auxiliary.h:97
i
int i
Definition
cfEzgcd.cc:132
result
return result
Definition
facAbsBiFact.cc:76
res
CanonicalForm res
Definition
facAbsFact.cc:60
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition
facBivar.h:39
WerrorS
void WerrorS(const char *s)
Definition
feFopen.cc:24
IDEAL_CMD
@ IDEAL_CMD
Definition
grammar.cc:285
ideals.h
InitLead
void InitLead(Poly *p)
Definition
janet.cc:409
T
STATIC_VAR jList * T
Definition
janet.cc:30
InitHistory
void InitHistory(Poly *p)
Definition
janet.cc:402
ComputeBasis
int ComputeBasis(jList *_lT, jList *_lQ)
Definition
janet.cc:1000
DestroyList
void DestroyList(jList *x)
Definition
janet.cc:714
CountList
int CountList(jList *Q)
Definition
janet.cc:617
InitProl
void InitProl(Poly *p)
Definition
janet.cc:416
InsertInCount
void InsertInCount(jList *x, Poly *y)
Definition
janet.cc:571
NewPoly
Poly * NewPoly(poly p)
Definition
janet.cc:361
Initialization
void Initialization(char *Ord)
Definition
janet.cc:952
GB_length
int GB_length()
Definition
janet.cc:740
janet.h
LCI
ListNode * LCI
Definition
janet.h:50
GCM
#define GCM(sz)
Definition
janet.h:6
jList
Definition
janet.h:35
kInterRedOld
ideal kInterRedOld(ideal F, const ideal Q)
Definition
kstd1.cc:3457
kstd1.h
mod2.h
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:44
nGreaterZero
#define nGreaterZero(n)
Definition
numbers.h:27
NULL
#define NULL
Definition
omList.c:12
p_Deg
long p_Deg(poly a, const ring r)
Definition
p_polys.cc:586
currRing
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition
polys.cc:13
polys.h
Compatibility layer for legacy polynomial operations (over currRing).
pTest
#define pTest(p)
Definition
polys.h:415
pIsConstant
#define pIsConstant(p)
like above, except that Comp must be 0
Definition
polys.h:239
pNeg
#define pNeg(p)
Definition
polys.h:199
pCopy
#define pCopy(p)
return a copy of the poly
Definition
polys.h:186
pOne
#define pOne()
Definition
polys.h:316
rOrdStr
char * rOrdStr(ring r)
Definition
ring.cc:526
ring.h
rHasLocalOrMixedOrdering
static BOOLEAN rHasLocalOrMixedOrdering(const ring r)
Definition
ring.h:774
idInit
ideal idInit(int idsize, int rank)
initialise an ideal / module
Definition
simpleideals.cc:35
idSkipZeroes
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
Definition
simpleideals.cc:201
IDELEMS
#define IDELEMS(i)
Definition
simpleideals.h:23
Q
#define Q
Definition
sirandom.c:26
Poly
Definition
janet.h:15
leftv
sleftv * leftv
Definition
structs.h:53
subexpr.h
jInitBasis
static BOOLEAN jInitBasis(ideal v, jList **TT, jList **QQ)
Definition
wrapper.cc:13
jjStdJanetBasis
BOOLEAN jjStdJanetBasis(leftv res, leftv v, int flag)
flag: 0: JB, 1: SB
Definition
wrapper.cc:50
Generated on
for My Project by
doxygen 1.17.0
for
Singular