My Project  debian-1:4.1.2-p1+ds-2
Macros | Functions | Variables
p_Procs_Set.h File Reference
#include "reporter/reporter.h"
#include "misc/auxiliary.h"
#include "shiftop.h"

Go to the source code of this file.

Macros

#define CheckProc(which)
 

Functions

static p_Field p_FieldIs (ring r)
 
static p_Length p_LengthIs (ring r)
 
static int p_IsNomog (long *sgn, int l)
 
static int p_IsPomog (long *sgn, int l)
 
static p_Ord p_OrdIs (ring r)
 
void nc_p_ProcsSet (ring rGR, p_Procs_s *p_Procs)
 
void p_ProcsSet (ring r, p_Procs_s *p_Procs)
 
void p_Debug_GetSpecNames (const ring r, const char *&field, const char *&length, const char *&ord)
 
void p_Debug_GetProcNames (const ring r, p_Procs_s *p_Procs)
 

Variables

STATIC_VAR p_Procs_s_p_procs
 
STATIC_VAR int set_names = 0
 

Macro Definition Documentation

◆ CheckProc

#define CheckProc (   which)
Value:
do \
{ \
if (p_Procs->which == NULL) \
{ \
dReportBug("p_Procs is NULL"); \
WarnS("Singular will work properly, but much slower"); \
WarnS("If you chose a coef ring, it may not work at all");\
p_Procs->which = (which##_Proc_Ptr)( \
which##__FieldGeneral_LengthGeneral_OrdGeneral); \
} \
} \
while (0);

Definition at line 122 of file p_Procs_Set.h.

Function Documentation

◆ nc_p_ProcsSet()

void nc_p_ProcsSet ( ring  rGR,
p_Procs_s p_Procs 
)

Definition at line 3205 of file old.gring.cc.

3206 {
3207  assume(rIsPluralRing(rGR));
3208  assume(p_Procs!=NULL);
3209 
3210  gnc_p_ProcsSet(rGR, p_Procs);
3211 
3212  if(rIsSCA(rGR) && ncExtensions(SCAMASK) )
3213  {
3214  sca_p_ProcsSet(rGR, p_Procs);
3215  }
3216 
3217  if( ncExtensions(NOPLURALMASK) )
3219 
3220  if(!rIsSCA(rGR) && !ncExtensions(NOFORMULAMASK))
3222 
3223 }

◆ p_Debug_GetProcNames()

void p_Debug_GetProcNames ( const ring  r,
p_Procs_s p_Procs 
)

Definition at line 231 of file p_Procs_Set.h.

234 {
235  set_names = 1;
236  p_ProcsSet(r, p_Procs); // changes p_Procs!!!

◆ p_Debug_GetSpecNames()

void p_Debug_GetSpecNames ( const ring  r,
const char *&  field,
const char *&  length,
const char *&  ord 
)

Definition at line 220 of file p_Procs_Set.h.

223 {
224  /*p_Field e_field =*/ (void) p_FieldIs(r);
225  /*p_Length e_length =*/ (void) p_LengthIs(r);
226  /*p_Ord e_ord =*/ (void) p_OrdIs(r);
227 
228  field = p_FieldEnum_2_String(p_FieldIs(r));

◆ p_FieldIs()

static p_Field p_FieldIs ( ring  r)
inlinestatic

Definition at line 21 of file p_Procs_Set.h.

24 {
25  if (rField_is_Zp(r))
26  return FieldZp;
27  if (rField_is_R(r)) return FieldR;
28  if (rField_is_GF(r)) return FieldGF;
29  if (rField_is_Q(r)) return FieldQ;
30 #ifdef HAVE_MORE_FIELDS_IMPLEMENTED
31  if (rField_is_long_R(r)) return FieldLong_R;
32  if (rField_is_long_C(r)) return FieldLong_C;
33  if (rField_is_Zp_a(r)) return FieldZp_a;
34  if (rField_is_Q_a(r)) return FieldQ_a;
35 #endif
36  if (rField_is_Ring(r)) return RingGeneral;

◆ p_IsNomog()

static int p_IsNomog ( long *  sgn,
int  l 
)
inlinestatic

Definition at line 54 of file p_Procs_Set.h.

57 {
58  int i;
59  for (i=0;i<l;i++)
60  if (sgn[i] > 0) return 0;
61 

◆ p_IsPomog()

static int p_IsPomog ( long *  sgn,
int  l 
)
inlinestatic

Definition at line 63 of file p_Procs_Set.h.

66 {
67  int i;
68  for (i=0;i<l;i++)
69  if (sgn[i] < 0) return 0;

◆ p_LengthIs()

static p_Length p_LengthIs ( ring  r)
inlinestatic

Definition at line 38 of file p_Procs_Set.h.

41 {
42  assume(r->ExpL_Size > 0);
43  // here is a quick hack to take care of p_MemAddAdjust
44  if (r->NegWeightL_Offset != NULL) return LengthGeneral;
45  if (r->ExpL_Size == 1) return LengthOne;
46  if (r->ExpL_Size == 2) return LengthTwo;
47  if (r->ExpL_Size == 3) return LengthThree;
48  if (r->ExpL_Size == 4) return LengthFour;
49  if (r->ExpL_Size == 5) return LengthFive;
50  if (r->ExpL_Size == 6) return LengthSix;
51  if (r->ExpL_Size == 7) return LengthSeven;
52  if (r->ExpL_Size == 8) return LengthEight;

◆ p_OrdIs()

static p_Ord p_OrdIs ( ring  r)
inlinestatic

Definition at line 71 of file p_Procs_Set.h.

74 {
75  long* sgn = r->ordsgn;
76  long l = r->ExpL_Size;
77  int zero = 0;
78 
79  if (sgn[l-1] == 0)
80  {
81  l--;
82  zero = 1;
83  }
84 
85  // we always favour the pomog cases
86  if (p_IsPomog(sgn,l)) return (zero ? OrdPomogZero : OrdPomog);
87  if (p_IsNomog(sgn,l)) return (zero ? OrdNomogZero : OrdNomog);
88 
89  assume(l > 1);
90 
91  if (sgn[0] == -1 && p_IsPomog(&sgn[1], l-1))
92  return (zero ? OrdNegPomogZero : OrdNegPomog);
93  if (sgn[l-1] == -1 && p_IsPomog(sgn, l-1))
94  return (zero ? OrdPomogNegZero : OrdPomogNeg);
95 
96  if (sgn[0] == 1 && p_IsNomog(&sgn[1], l-1))
97  return (zero ? OrdPosNomogZero : OrdPosNomog);
98  if (sgn[l-1] == 1 && p_IsNomog(sgn, l-1))
99  return (zero ? OrdNomogPosZero : OrdNomogPos);
100 
101  assume(l > 2);
102 
103  if (sgn[0] == 1 && sgn[1] == 1 && p_IsNomog(&sgn[2], l-2))
104  return (zero ? OrdPosPosNomogZero : OrdPosPosNomog);
105 
106  if (sgn[0] == 1 && sgn[l-1] == 1 && p_IsNomog(&sgn[1], l-2))
107  return (zero ? OrdPosNomogPosZero : OrdPosNomogPos);
108 
109  if (sgn[0] == -1 && sgn[1] == 1 && p_IsNomog(&sgn[2], l-2))
110  return (zero ? OrdNegPosNomogZero : OrdNegPosNomog);
111 

◆ p_ProcsSet()

void p_ProcsSet ( ring  r,
p_Procs_s p_Procs 
)

Definition at line 139 of file p_Procs_Set.h.

142 {
143  p_Field field = p_FieldIs(r);
145  p_Ord ord = p_OrdIs(r);
146 
147  assume(p_Procs != NULL);
148  memset(p_Procs, 0, sizeof(p_Procs_s));
149  _p_procs = p_Procs;
150 
151  SetProcs(field, length, ord);
152  extern poly p_Mult_nn_pthread(poly p, const number n, const ring r);
153  #ifdef NV_OPS
154  if ((field==FieldZp) && (r->cf->ch>NV_MAX_PRIME))
155  {
156  // set all (mult/div.) routines to FieldGeneral-variants
157  SetProcs(FieldGeneral, length,ord); // p_Mult_nn, ...
158  // set all non-mult/div. routines to FieldZp-variants
159  SetProcs_nv(FieldZp, length,ord); // p_Delete, p_ShallowCopyDelete...
160  }
161  if (field==RingGeneral)
162  {
163  if (nCoeff_is_Domain(r->cf))
165  // FieldGeneral vs. RingGeneral: HAVE_ZERODIVISORS
166  else
168  }
169  #endif
170 #ifdef HAVE_SHIFTBBA
171  if (r->isLPring)
172  {
173  _p_procs->pp_Mult_mm = shift_pp_Mult_mm;
174  _p_procs->p_Mult_mm = shift_p_Mult_mm;
175  _p_procs->p_mm_Mult = shift_p_mm_Mult;
176  _p_procs->pp_mm_Mult = shift_pp_mm_Mult;
177  _p_procs->p_Minus_mm_Mult_qq = shift_p_Minus_mm_Mult_qq;
178  // Unsupported procs:
179  _p_procs->pp_Mult_mm_Noether = shift_pp_Mult_mm_Noether_STUB;
180  _p_procs->pp_Mult_Coeff_mm_DivSelect = shift_pp_Mult_Coeff_mm_DivSelect_STUB;
181  _p_procs->pp_Mult_Coeff_mm_DivSelectMult = shift_pp_Mult_Coeff_mm_DivSelectMult_STUB;
182  }
183  else
184 #endif
185  {
186  _p_procs->p_mm_Mult=_p_procs->p_Mult_mm;
187  _p_procs->pp_mm_Mult=_p_procs->pp_Mult_mm;
188  }
189  CheckProc(p_Copy);
197  CheckProc(pp_Mult_mm_Noether);
199  CheckProc(p_Neg);
201  CheckProc(pp_Mult_Coeff_mm_DivSelectMult);
203  CheckProc(p_kBucketSetLm);
204 
205 /*
206  assume(p_Procs->pp_Mult_mm_Noether != pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral ||
207  p_Procs->p_Minus_mm_Mult_qq == p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral ||
208  r->OrdSgn == 1 || r->LexOrder);
209 */
210 #ifdef HAVE_PLURAL
211 #ifndef SING_NDEBUG
212  if (rIsPluralRing(r))
213  {
214  dReportError("Setting pProcs in p_ProcsSet (rDebugPrint!?)!!!");
215  nc_p_ProcsSet(r, _p_procs); // Setup non-commutative p_Procs table!
216  }
217 #endif

Variable Documentation

◆ _p_procs

STATIC_VAR p_Procs_s* _p_procs

Definition at line 114 of file p_Procs_Set.h.

◆ set_names

STATIC_VAR int set_names = 0

Definition at line 118 of file p_Procs_Set.h.

FieldGeneral
Definition: p_Procs_Impl.h:106
set_names
STATIC_VAR int set_names
Definition: p_Procs_Set.h:118
dReportError
int dReportError(const char *fmt,...)
Definition: dError.cc:41
ncInitSpecialPairMultiplication
BOOLEAN ncInitSpecialPairMultiplication(ring r)
Definition: ncSAMult.cc:264
rField_is_long_R
static BOOLEAN rField_is_long_R(const ring r)
Definition: ring.h:536
OrdPosNomogZero
Definition: p_Procs_Impl.h:163
p_IsPomog
static int p_IsPomog(long *sgn, int l)
Definition: p_Procs_Set.h:63
p_ProcsSet
void p_ProcsSet(ring r, p_Procs_s *p_Procs)
Definition: p_Procs_Set.h:139
LengthGeneral
Definition: p_Procs_Impl.h:119
p_FieldIs
static p_Field p_FieldIs(ring r)
Definition: p_Procs_Set.h:21
p_IsNomog
static int p_IsNomog(long *sgn, int l)
Definition: p_Procs_Set.h:54
p_Merge_q
static poly p_Merge_q(poly p, poly q, const ring r)
Definition: p_polys.h:1136
ncExtensions
bool ncExtensions(int iMask)
Definition: old.gring.cc:94
shift_pp_Mult_Coeff_mm_DivSelect_STUB
poly shift_pp_Mult_Coeff_mm_DivSelect_STUB(poly p, const poly m, int &shorter, const ring r)
Definition: shiftop.cc:314
p_Ord
p_Ord
Definition: p_Procs_Impl.h:130
p_LengthIs
static p_Length p_LengthIs(ring r)
Definition: p_Procs_Set.h:38
p_Mult_mm
static poly p_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:985
p_Neg
static poly p_Neg(poly p, const ring r)
Definition: p_polys.h:1031
LengthFive
Definition: p_Procs_Impl.h:123
p_Minus_mm_Mult_qq
static poly p_Minus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, int lq, const poly spNoether, const ring r)
Definition: p_polys.h:994
OrdNegPosNomogZero
Definition: p_Procs_Impl.h:167
length
static BOOLEAN length(leftv result, leftv arg)
Definition: interval.cc:263
p_ShallowCopyDelete
static poly p_ShallowCopyDelete(poly p, const ring r, omBin bin)
Definition: p_polys.h:872
CheckProc
#define CheckProc(which)
Definition: p_Procs_Set.h:122
LengthOne
Definition: p_Procs_Impl.h:127
OrdNomog
Definition: p_Procs_Impl.h:136
p_LengthEnum_2_String
static const char * p_LengthEnum_2_String(p_Length length)
Definition: p_Procs_Impl.h:214
pp_Mult_mm
static poly pp_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:975
LengthEight
Definition: p_Procs_Impl.h:120
rField_is_Zp_a
static BOOLEAN rField_is_Zp_a(const ring r)
Definition: ring.h:523
FieldLong_R
Definition: p_Procs_Impl.h:112
p_Field
p_Field
Definition: p_Procs_Impl.h:101
pp_Mult_Coeff_mm_DivSelect
static poly pp_Mult_Coeff_mm_DivSelect(poly p, const poly m, const ring r)
Definition: p_polys.h:1014
OrdPosNomogPosZero
Definition: p_Procs_Impl.h:166
FieldLong_C
Definition: p_Procs_Impl.h:113
rIsPluralRing
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
Definition: ring.h:396
LengthTwo
Definition: p_Procs_Impl.h:126
FieldQ_a
Definition: p_Procs_Impl.h:115
OrdPomogZero
Definition: p_Procs_Impl.h:140
OrdNegPomog
Definition: p_Procs_Impl.h:144
p_Copy
static poly p_Copy(poly p, const ring r)
returns a copy of p
Definition: p_polys.h:796
i
int i
Definition: cfEzgcd.cc:125
rField_is_Q_a
static BOOLEAN rField_is_Q_a(const ring r)
Definition: ring.h:533
OrdPosNomogPos
Definition: p_Procs_Impl.h:157
OrdPosNomog
Definition: p_Procs_Impl.h:148
OrdPomogNegZero
Definition: p_Procs_Impl.h:153
shift_p_Mult_mm
poly shift_p_Mult_mm(poly p, const poly m, const ring ri)
Definition: shiftop.cc:88
SCAMASK
const int SCAMASK
Definition: nc.h:324
NOPLURALMASK
const int NOPLURALMASK
Definition: nc.h:338
OrdNegPomogZero
Definition: p_Procs_Impl.h:152
sca_p_ProcsSet
void sca_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
Definition: sca.cc:1223
LengthFour
Definition: p_Procs_Impl.h:124
shift_p_Minus_mm_Mult_qq
poly shift_p_Minus_mm_Mult_qq(poly p, poly m, poly q, int &Shorter, const poly spNoether, const ring ri)
Definition: shiftop.cc:268
rField_is_Ring
static BOOLEAN rField_is_Ring(const ring r)
Definition: ring.h:478
OrdNomogPosZero
Definition: p_Procs_Impl.h:162
OrdPomog
Definition: p_Procs_Impl.h:135
p_OrdIs
static p_Ord p_OrdIs(ring r)
Definition: p_Procs_Set.h:71
shift_pp_Mult_Coeff_mm_DivSelectMult_STUB
poly shift_pp_Mult_Coeff_mm_DivSelectMult_STUB(poly p, const poly m, const poly a, const poly b, int &shorter, const ring r)
Definition: shiftop.cc:309
LengthThree
Definition: p_Procs_Impl.h:125
_p_procs
STATIC_VAR p_Procs_s * _p_procs
Definition: p_Procs_Set.h:114
OrdNegPosNomog
Definition: p_Procs_Impl.h:158
LengthSeven
Definition: p_Procs_Impl.h:121
FieldZp_a
Definition: p_Procs_Impl.h:114
p_Procs_s
struct p_Procs_s p_Procs_s
Definition: ring.h:22
rField_is_R
static BOOLEAN rField_is_R(const ring r)
Definition: ring.h:512
SetProcs
#define SetProcs(field, length, ord)
Definition: p_Procs_Impl.h:654
LengthSix
Definition: p_Procs_Impl.h:122
p_Delete
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:845
p_Add_q
static poly p_Add_q(poly p, poly q, const ring r)
Definition: p_polys.h:880
rField_is_GF
static BOOLEAN rField_is_GF(const ring r)
Definition: ring.h:515
ncInitSpecialPowersMultiplication
bool ncInitSpecialPowersMultiplication(ring r)
Definition: ncSAFormula.cc:48
NV_MAX_PRIME
#define NV_MAX_PRIME
Definition: modulop.h:28
gnc_p_ProcsSet
static void gnc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
Definition: old.gring.cc:3141
shift_pp_Mult_mm_Noether_STUB
poly shift_pp_Mult_mm_Noether_STUB(poly p, const poly m, const poly spNoether, int &ll, const ring ri)
Definition: shiftop.cc:285
p_Length
p_Length
Definition: p_Procs_Impl.h:117
SetProcs_ring
#define SetProcs_ring(field, length, ord)
Definition: p_Procs_Impl.h:690
OrdNomogPos
Definition: p_Procs_Impl.h:149
OrdPosPosNomog
Definition: p_Procs_Impl.h:156
FieldR
Definition: p_Procs_Impl.h:109
assume
#define assume(x)
Definition: mod2.h:384
OrdPomogNeg
Definition: p_Procs_Impl.h:145
NULL
#define NULL
Definition: omList.c:11
OrdNomogZero
Definition: p_Procs_Impl.h:141
shift_pp_mm_Mult
poly shift_pp_mm_Mult(poly p, const poly m, const ring ri)
Definition: shiftop.cc:144
OrdPosPosNomogZero
Definition: p_Procs_Impl.h:165
l
int l
Definition: cfEzgcd.cc:93
shift_pp_Mult_mm
poly shift_pp_Mult_mm(poly p, const poly m, const ring ri)
Definition: shiftop.cc:21
pp_Mult_nn
static poly pp_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:936
shift_p_mm_Mult
poly shift_p_mm_Mult(poly p, const poly m, const ring ri)
Definition: shiftop.cc:211
FieldGF
Definition: p_Procs_Impl.h:110
p
int p
Definition: cfModGcd.cc:4019
p_FieldEnum_2_String
static const char * p_FieldEnum_2_String(p_Field field)
Definition: p_Procs_Impl.h:193
NOFORMULAMASK
const int NOFORMULAMASK
Definition: nc.h:339
RingGeneral
Definition: p_Procs_Impl.h:117
rIsSCA
static bool rIsSCA(const ring r)
Definition: nc.h:190
rField_is_long_C
static BOOLEAN rField_is_long_C(const ring r)
Definition: ring.h:539
rField_is_Zp
static BOOLEAN rField_is_Zp(const ring r)
Definition: ring.h:494
p_Mult_nn
static poly p_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:902
nc_p_ProcsSet
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
Definition: old.gring.cc:3205
FieldZp
Definition: p_Procs_Impl.h:107
sgn
int sgn(const Rational &a)
Definition: GMPrat.cc:430
nCoeff_is_Domain
static FORCE_INLINE BOOLEAN nCoeff_is_Domain(const coeffs r)
returns TRUE, if r is a field or r has no zero divisors (i.e is a domain)
Definition: coeffs.h:760
rField_is_Q
static BOOLEAN rField_is_Q(const ring r)
Definition: ring.h:500
FieldQ
Definition: p_Procs_Impl.h:108