My Project  debian-1:4.1.1-p2+ds-4
nc.h
Go to the documentation of this file.
1 #ifndef KERNEL_NC_H
2 #define KERNEL_NC_H
3 
4 #include "kernel/mod2.h"
5 
6 #ifdef HAVE_PLURAL
7 
8 #ifdef PLURAL_INTERNAL_DECLARATIONS
9 
10 # include "polys/nc/gb_hack.h"
11 
12 #else // #ifdef PLURAL_INTERNAL_DECLARATIONS
13 
14 # define PLURAL_INTERNAL_DECLARATIONS
15 # include "polys/nc/gb_hack.h"
16 # undef PLURAL_INTERNAL_DECLARATIONS
17 
18 #endif // #ifdef PLURAL_INTERNAL_DECLARATIONS
19 
20 #include "polys/nc/nc.h"
21 #include "polys/simpleideals.h"
22 
23 #include "kernel/polys.h"
24 
25 
26 
27 static inline ideal nc_GB(const ideal F, const ideal Q, const intvec *w, const intvec *hilb, kStrategy strat, const ring r)
28 {
30  assume(r->GetNC()->p_Procs.GB!=NULL);
31 
32  BBA_Proc gb = cast_A_to_B<void*, BBA_Proc>(r->GetNC()->p_Procs.GB);
33 
34  // NOTE: the following code block is a hack in order to make a linker to
35  // believe in these functions but in reallity it should not be used.
36  // Although it can also serve as an illustration for the
37  // NC-initialization procedure for GB hidden away (hackedly) in
38  // libpolys.
39  // The only other solution would be to separate GB and the whole NC
40  // subsystems from both libpolys AND kernel... which would require
41  // too much effort and thus cannot be done right now.
42  // Therefore this is a TODO for a future (large-scale) cleanup.
43  if( gb == NULL)
44  {
45  if( rIsSCA(r) )
46  {
48  gb = sca_mora;
49  else
50  gb = sca_bba; // sca_gr_bba???
51  } else
52  {
54  gb = gnc_gr_mora;
55  else
56  gb = gnc_gr_bba;
57  }
58 
59  r->GetNC()->p_Procs.GB = cast_A_to_vptr(gb);
60  }
61 
62  return gb(F, Q, w, hilb, strat, r);
63 }
64 
65 /// Compute two-sided GB:
66 ideal twostd(ideal I);
67 
68 /// Ann: ???
69 ideal Approx_Step(ideal L);
70 
71 #endif // HAVE_PLURAL
72 
73 #endif // KERNEL_NC_H
nc_GB
static ideal nc_GB(const ideal F, const ideal Q, const intvec *w, const intvec *hilb, kStrategy strat, const ring r)
Definition: nc.h:27
skStrategy
Definition: kutil.h:261
cast_A_to_vptr
void * cast_A_to_vptr(A a)
Definition: auxiliary.h:398
polys.h
simpleideals.h
gnc_gr_bba
BBA_Proc gnc_gr_bba
Definition: old.gring.cc:67
gnc_gr_mora
BBA_Proc gnc_gr_mora
Definition: old.gring.cc:68
Approx_Step
ideal Approx_Step(ideal L)
Ann: ???
Definition: nc.cc:250
w
const CanonicalForm & w
Definition: facAbsFact.cc:55
rIsPluralRing
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
Definition: ring.h:403
rHasLocalOrMixedOrdering
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
Definition: ring.h:751
BBA_Proc
ideal(* BBA_Proc)(const ideal, const ideal, const intvec *, const intvec *, kStrategy strat, const ring)
Definition: ring.h:250
mod2.h
intvec
Definition: intvec.h:16
gb_hack.h
sca_bba
BBA_Proc sca_bba
Definition: old.gring.cc:69
nc.h
assume
#define assume(x)
Definition: mod2.h:384
NULL
#define NULL
Definition: omList.c:9
sca_mora
BBA_Proc sca_mora
Definition: old.gring.cc:70
Q
#define Q
Definition: sirandom.c:25
rIsSCA
static bool rIsSCA(const ring r)
Definition: nc.h:198
twostd
ideal twostd(ideal I)
Compute two-sided GB:
Definition: nc.cc:18