1 | #ifndef SPSPOLYLOOP_H |
---|
2 | #define SPSPOLYLOOP_H |
---|
3 | |
---|
4 | #include "structs.h" |
---|
5 | #include "ring.h" |
---|
6 | #include "kutil.h" |
---|
7 | |
---|
8 | /* |
---|
9 | * assume monom = L(monom) |
---|
10 | * pNext(m) = result = p2-p1*m |
---|
11 | * do not destroy p1, but p2 |
---|
12 | */ |
---|
13 | void spSpolyLoop_General (poly a1, poly a2, poly monom, poly spNoether); |
---|
14 | typedef void (*spSpolyLoopProc)(poly p1, poly p2, poly m, poly spNoether); |
---|
15 | |
---|
16 | |
---|
17 | spSpolyLoopProc spGetSpolyLoop(ring r, rOrderType_t ot, BOOLEAN homog); |
---|
18 | |
---|
19 | inline spSpolyLoopProc spGetSpolyLoop(ring r, int modrank, int syzComp, |
---|
20 | BOOLEAN homog) |
---|
21 | { |
---|
22 | return spGetSpolyLoop(r, spGetOrderType(r, modrank, syzComp), homog); |
---|
23 | } |
---|
24 | |
---|
25 | inline spSpolyLoopProc spGetSpolyLoop(ring r, kStrategy strat) |
---|
26 | { |
---|
27 | return spGetSpolyLoop(r, spGetOrderType(r, strat->ak, strat->syzComp), |
---|
28 | ((strat->homog && strat->kModW==NULL && |
---|
29 | ! rHasSimpleLexOrder(r)))); |
---|
30 | } |
---|
31 | |
---|
32 | inline spSpolyLoopProc spGetSpolyLoop(ring r, kStrategy strat, int syzComp) |
---|
33 | { |
---|
34 | return spGetSpolyLoop(r, spGetOrderType(r, strat->ak, syzComp), |
---|
35 | ((strat->homog && strat->kModW==NULL && |
---|
36 | ! rHasSimpleLexOrder(r)))); |
---|
37 | } |
---|
38 | |
---|
39 | |
---|
40 | inline spSpolyLoopProc spGetSpolyLoop(ring r) |
---|
41 | { |
---|
42 | return spGetSpolyLoop(r, rGetOrderType(r), FALSE); |
---|
43 | } |
---|
44 | |
---|
45 | #endif // SPSPOLYLOOP_H |
---|