Macros | Enumerations | Functions
p_Procs_Impl.h File Reference

Go to the source code of this file.

Macros

#define HAVE_FAST_P_PROCS   0
 
#define HAVE_FAST_FIELD   0
 
#define HAVE_FAST_LENGTH   0
 
#define HAVE_FAST_ORD   0
 
#define HAVE_FAST_ZERO_ORD   0
 
#define HAVE_LENGTH_DIFF
 
#define ZP_COPY_FIELD(field)   (field == FieldZp || field == FieldGF || field == FieldR)
 
#define ORD_MAX_N_1   OrdNomog
 
#define ORD_MAX_N_2   OrdPomogNeg
 
#define ORD_MAX_N_3   OrdNegPosNomog
 
#define SetProc(what, field, length, ord)
 
#define SetProcs(field, length, ord)
 

Enumerations

enum  p_Field {
  FieldGeneral = 0, FieldZp, FieldQ, FieldR,
  FieldGF, FieldLong_R, FieldLong_C, FieldZp_a,
  FieldQ_a, RingGeneral, FieldUnknown
}
 
enum  p_Length {
  LengthGeneral = 0, LengthEight, LengthSeven, LengthSix,
  LengthFive, LengthFour, LengthThree, LengthTwo,
  LengthOne, LengthUnknown
}
 
enum  p_Ord {
  OrdGeneral = 0, OrdPomog, OrdNomog, OrdPomogZero,
  OrdNomogZero, OrdNegPomog, OrdPomogNeg, OrdPosNomog,
  OrdNomogPos, OrdNegPomogZero, OrdPomogNegZero, OrdPosPosNomog,
  OrdPosNomogPos, OrdNegPosNomog, OrdNomogPosZero, OrdPosNomogZero,
  OrdPosPosNomogZero, OrdPosNomogPosZero, OrdNegPosNomogZero, OrdUnknown
}
 
enum  p_Proc {
  p_Copy_Proc = 0, p_Delete_Proc, p_ShallowCopyDelete_Proc, p_Mult_nn_Proc,
  pp_Mult_nn_Proc, pp_Mult_mm_Proc, pp_Mult_mm_Noether_Proc, p_Mult_mm_Proc,
  p_Add_q_Proc, p_Minus_mm_Mult_qq_Proc, p_Neg_Proc, pp_Mult_Coeff_mm_DivSelect_Proc,
  pp_Mult_Coeff_mm_DivSelectMult_Proc, p_Merge_q_Proc, p_kBucketSetLm_Proc, p_Unknown_Proc
}
 

Functions

static const char * p_FieldEnum_2_String (p_Field field)
 
static const char * p_LengthEnum_2_String (p_Length length)
 
static const char * p_OrdEnum_2_String (p_Ord ord)
 
static const char * p_ProcEnum_2_String (p_Proc proc)
 
static int p_ProcDependsOn_Field (p_Proc proc)
 
static int p_ProcDependsOn_Ord (p_Proc proc)
 
static int p_ProcDependsOn_Length (p_Proc proc)
 
static const char * p_ProcField_2_Module (p_Proc proc, p_Field field)
 
static int IsZeroOrd (p_Ord ord)
 
static p_Ord ZeroOrd_2_NonZeroOrd (p_Ord ord, int strict)
 
static void FastP_ProcsFilter (p_Field &field, p_Length &length, p_Ord &ord, const p_Proc proc)
 
static void FastFieldFilter (p_Field &field)
 
static void FastLengthFilter (p_Length &length)
 
static void FastOrdFilter (p_Ord &ord)
 
static void FastOrdZeroFilter (p_Ord &ord)
 
static void NCopy__Filter (p_Field &field)
 
static void p_Add_q__Filter (p_Length &length, p_Ord &ord)
 
static void pp_Mult_mm_Noether_Filter (p_Field &field, p_Length &length, p_Ord &ord)
 
static void FastProcFilter (p_Proc proc, p_Field &field, p_Length &length, p_Ord &ord)
 
static int IsValidSpec (p_Field field, p_Length length, p_Ord ord)
 
static int index (p_Length length, p_Ord ord)
 
static int index (p_Field field, p_Length length)
 
static int index (p_Field field, p_Length length, p_Ord ord)
 
static int index (p_Proc proc, p_Field field, p_Length length, p_Ord ord)
 

Macro Definition Documentation

#define HAVE_FAST_FIELD   0

Definition at line 54 of file p_Procs_Impl.h.

#define HAVE_FAST_LENGTH   0

Definition at line 64 of file p_Procs_Impl.h.

#define HAVE_FAST_ORD   0

Definition at line 74 of file p_Procs_Impl.h.

#define HAVE_FAST_P_PROCS   0

Definition at line 45 of file p_Procs_Impl.h.

#define HAVE_FAST_ZERO_ORD   0

Definition at line 82 of file p_Procs_Impl.h.

#define HAVE_LENGTH_DIFF

Definition at line 86 of file p_Procs_Impl.h.

#define ORD_MAX_N_1   OrdNomog

Definition at line 147 of file p_Procs_Impl.h.

#define ORD_MAX_N_2   OrdPomogNeg

Definition at line 156 of file p_Procs_Impl.h.

#define ORD_MAX_N_3   OrdNegPosNomog

Definition at line 169 of file p_Procs_Impl.h.

#define SetProc (   what,
  field,
  length,
  ord 
)
Value:
do \
{ \
p_Field t_field = field; \
p_Ord t_ord = ord; \
p_Length t_length = length; \
FastProcFilter(what##_Proc, t_field, t_length, t_ord); \
DoSetProc(what, t_field, t_length, t_ord); \
} \
while (0) \
static void FastProcFilter(p_Proc proc, p_Field &field, p_Length &length, p_Ord &ord)
Definition: p_Procs_Impl.h:527
p_Length
Definition: p_Procs_Impl.h:127
p_Field
Definition: p_Procs_Impl.h:109
while(1)
Definition: libparse.cc:1442
p_Ord
Definition: p_Procs_Impl.h:140
#define DoSetProc(what, field, length, ord)

Definition at line 656 of file p_Procs_Impl.h.

#define SetProcs (   field,
  length,
  ord 
)
Value:
do \
{ \
SetProc(p_Copy, field, length, OrdGeneral); \
SetProc(pp_Mult_nn, field, length, OrdGeneral); \
SetProc(pp_Mult_mm, field, length, OrdGeneral); \
SetProc(p_Mult_mm, field, length, OrdGeneral); \
SetProc(p_Minus_mm_Mult_qq, field, length, ord); \
SetProc(pp_Mult_mm_Noether, field, length, ord); \
SetProc(p_Add_q, field, length, ord); \
SetProc(pp_Mult_Coeff_mm_DivSelectMult, field, length, OrdGeneral); \
SetProc(p_kBucketSetLm, field, length, ord); \
} \
while (0)
static poly p_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:973
static poly pp_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:927
static poly pp_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:962
static poly p_Copy(poly p, const ring r)
returns a copy of p
Definition: p_polys.h:811
while(1)
Definition: libparse.cc:1442
static poly p_ShallowCopyDelete(poly p, const ring r, omBin bin)
Definition: p_polys.h:876
static poly p_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:902
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:850
#define SetProc(what, field, length, ord)
Definition: p_Procs_Impl.h:656
static poly p_Merge_q(poly p, poly q, const ring r)
Definition: p_polys.h:1140
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:981
static poly p_Neg(poly p, const ring r)
Definition: p_polys.h:1018
static poly p_Add_q(poly p, poly q, const ring r)
Definition: p_polys.h:884
static poly pp_Mult_Coeff_mm_DivSelect(poly p, const poly m, const ring r)
Definition: p_polys.h:1001

Definition at line 667 of file p_Procs_Impl.h.

#define ZP_COPY_FIELD (   field)    (field == FieldZp || field == FieldGF || field == FieldR)

Definition at line 92 of file p_Procs_Impl.h.

Enumeration Type Documentation

enum p_Field
Enumerator
FieldGeneral 
FieldZp 
FieldQ 
FieldR 
FieldGF 
FieldLong_R 
FieldLong_C 
FieldZp_a 
FieldQ_a 
RingGeneral 
FieldUnknown 

Definition at line 109 of file p_Procs_Impl.h.

110 {
111  FieldGeneral = 0,
112  FieldZp,
113  FieldQ,
114  FieldR,
115  FieldGF,
116 #if HAVE_MORE_FIELDS_IMPLEMENTED
117  FieldLong_R,
118  FieldLong_C,
119  FieldZp_a,
120  FieldQ_a,
121 #endif
122 #ifdef HAVE_RINGS
123  RingGeneral,
124 #endif
126 } p_Field;
p_Field
Definition: p_Procs_Impl.h:109
enum p_Length
Enumerator
LengthGeneral 
LengthEight 
LengthSeven 
LengthSix 
LengthFive 
LengthFour 
LengthThree 
LengthTwo 
LengthOne 
LengthUnknown 

Definition at line 127 of file p_Procs_Impl.h.

enum p_Ord
Enumerator
OrdGeneral 
OrdPomog 
OrdNomog 
OrdPomogZero 
OrdNomogZero 
OrdNegPomog 
OrdPomogNeg 
OrdPosNomog 
OrdNomogPos 
OrdNegPomogZero 
OrdPomogNegZero 
OrdPosPosNomog 
OrdPosNomogPos 
OrdNegPosNomog 
OrdNomogPosZero 
OrdPosNomogZero 
OrdPosPosNomogZero 
OrdPosNomogPosZero 
OrdNegPosNomogZero 
OrdUnknown 

Definition at line 140 of file p_Procs_Impl.h.

141 {
142  OrdGeneral = 0,
143  // ordsgn
144  // 0 1 i n-1 n n_min Example
145  OrdPomog, // + + + + + 1 (lp,C)
146  OrdNomog, // - - - - - 1 (ls, c), (ds, c)
147 #define ORD_MAX_N_1 OrdNomog
148 
149 #ifdef HAVE_LENGTH_DIFF
150  OrdPomogZero, // + + + + 0 2 (Dp, C), Even vars
151  OrdNomogZero, // - - - - 0 2 (ds, c), Even vars
152 #endif
153 
154  OrdNegPomog, // - + + + + 2 (c, lp), (Ds, c)
155  OrdPomogNeg, // + + + + - 2 (lp, c)
156 #define ORD_MAX_N_2 OrdPomogNeg
157 
158  OrdPosNomog, // + - - - + 3 (dp, c) (for n == 2, use PomogNeg)
159  OrdNomogPos, // - - - - + 3 (ls, C) (for n == 2, use NegPomog)
160 
161 #ifdef HAVE_LENGTH_DIFF
162  OrdNegPomogZero, // - + + + 0 3 (c, lp), (Ds, c)
163  OrdPomogNegZero, // + + + - 0 3 (lp, c)
164 #endif
165 
166  OrdPosPosNomog, // + + - - - 3 (C, dp)
167  OrdPosNomogPos, // + - - - + 3 (dp, C)
168  OrdNegPosNomog, // - + - - - 3 (c, dp)
169 #define ORD_MAX_N_3 OrdNegPosNomog
170 
171 #ifdef HAVE_LENGTH_DIFF
172  OrdNomogPosZero, // - - - + 0 4 (ls, C) (for n == 3, use NegPomogZero)
173  OrdPosNomogZero, // + - - - 0 4 (dp, c) (for n == 3, use PomogNegZero)
174 
175  OrdPosPosNomogZero,// + + - - 0 4 (C, dp)
176  OrdPosNomogPosZero,// + - - + 0 4 (dp, C)
177  OrdNegPosNomogZero,// - + - - 0 4 (c, dp)
178 #endif
179 
180  OrdUnknown
181 } p_Ord;
p_Ord
Definition: p_Procs_Impl.h:140
enum p_Proc
Enumerator
p_Copy_Proc 
p_Delete_Proc 
p_ShallowCopyDelete_Proc 
p_Mult_nn_Proc 
pp_Mult_nn_Proc 
pp_Mult_mm_Proc 
pp_Mult_mm_Noether_Proc 
p_Mult_mm_Proc 
p_Add_q_Proc 
p_Minus_mm_Mult_qq_Proc 
p_Neg_Proc 
pp_Mult_Coeff_mm_DivSelect_Proc 
pp_Mult_Coeff_mm_DivSelectMult_Proc 
p_Merge_q_Proc 
p_kBucketSetLm_Proc 
p_Unknown_Proc 

Definition at line 183 of file p_Procs_Impl.h.

Function Documentation

static void FastFieldFilter ( p_Field field)
inlinestatic

Definition at line 443 of file p_Procs_Impl.h.

444 {
445  if (HAVE_FAST_FIELD <= 0 ||
446  (HAVE_FAST_FIELD == 1 && field != FieldZp) ||
447  (field != FieldZp && field != FieldQ))
448 #ifdef HAVE_RINGS
449  if (field != RingGeneral)
450 #endif
451  field = FieldGeneral;
452 }
#define HAVE_FAST_FIELD
Definition: p_Procs_Impl.h:54
static void FastLengthFilter ( p_Length length)
inlinestatic

Definition at line 454 of file p_Procs_Impl.h.

455 {
456  if ((HAVE_FAST_LENGTH == 3 && length <= LengthFive) ||
457  (HAVE_FAST_LENGTH == 2 && length <= LengthFour) ||
458  (HAVE_FAST_LENGTH == 1 && length <= LengthTwo) ||
459  (HAVE_FAST_LENGTH <= 0))
460  {
461  length = LengthGeneral;
462  }
463 }
#define HAVE_FAST_LENGTH
Definition: p_Procs_Impl.h:64
static void FastOrdFilter ( p_Ord ord)
inlinestatic

Definition at line 465 of file p_Procs_Impl.h.

466 {
467  if ((HAVE_FAST_ORD == 3 && ord >= OrdNomogPosZero) ||
468  (HAVE_FAST_ORD == 2 && ord >= OrdPosNomog) ||
469  (HAVE_FAST_ORD == 1 && ord >= OrdPomogZero) ||
470  (HAVE_FAST_ORD <= 0))
471  ord = OrdGeneral;
472 }
#define HAVE_FAST_ORD
Definition: p_Procs_Impl.h:74
static void FastOrdZeroFilter ( p_Ord ord)
inlinestatic

Definition at line 474 of file p_Procs_Impl.h.

475 {
476  if (IsZeroOrd(ord))
477  {
478  if ((HAVE_FAST_ZERO_ORD == 1 && (ord != OrdPosNomogPosZero &&
479  ord != OrdNomogPosZero &&
480  ord != OrdPomogNegZero)) ||
481  (HAVE_FAST_ZERO_ORD <= 0))
482  ord = ZeroOrd_2_NonZeroOrd(ord, 1);
483  }
484 }
static int IsZeroOrd(p_Ord ord)
Definition: p_Procs_Impl.h:356
static p_Ord ZeroOrd_2_NonZeroOrd(p_Ord ord, int strict)
Definition: p_Procs_Impl.h:365
#define HAVE_FAST_ZERO_ORD
Definition: p_Procs_Impl.h:82
static void FastP_ProcsFilter ( p_Field field,
p_Length length,
p_Ord ord,
const p_Proc  proc 
)
inlinestatic

Definition at line 419 of file p_Procs_Impl.h.

420 {
421  if (HAVE_FAST_P_PROCS >= 5) return;
422 
423  if (HAVE_FAST_P_PROCS < 3 && field == FieldQ)
424  field = FieldGeneral;
425 
426  if ((HAVE_FAST_P_PROCS == 0) ||
427  (HAVE_FAST_P_PROCS <= 4 && field != FieldZp && field != FieldQ &&
428  proc != p_Merge_q_Proc))
429  {
430 #ifdef HAVE_RINGS
431  if (field != RingGeneral)
432 #endif
433  field = FieldGeneral;
434  length = LengthGeneral;
435  ord = OrdGeneral;
436  return;
437  }
438  if (HAVE_FAST_P_PROCS == 1 ||
439  (HAVE_FAST_P_PROCS == 4 && field != FieldZp && proc != p_Merge_q_Proc))
440  ord = OrdGeneral;
441 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
#define HAVE_FAST_P_PROCS
Definition: p_Procs_Impl.h:45
static void FastProcFilter ( p_Proc  proc,
p_Field field,
p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 527 of file p_Procs_Impl.h.

529 {
530  switch(proc)
531  {
532  case p_Add_q_Proc:
533  case p_Merge_q_Proc:
534  p_Add_q__Filter(length, ord);
535  break;
536 
537  case p_Copy_Proc:
538  case p_Delete_Proc:
539  NCopy__Filter(field);
540  break;
541 
543  pp_Mult_mm_Noether_Filter(field, length, ord);
544  break;
545 
547  if (length == LengthOne || length == LengthTwo)
548  {
549 #ifdef HAVE_RINGS
550  if (field != RingGeneral)
551 #endif
552  field = FieldGeneral;
553  length = LengthGeneral;
554  ord = OrdGeneral;
555  return;
556  }
557  break;
558 
559  default: break;
560  }
561 
562  FastOrdFilter(ord);
563  FastOrdZeroFilter(ord);
564  FastLengthFilter(length);
565  FastFieldFilter(field);
566  FastP_ProcsFilter(field, length, ord, proc);
567 #ifdef p_Procs_Static
568  StaticKernelFilter(field, length, ord, proc);
569 #endif
570 }
static void NCopy__Filter(p_Field &field)
Definition: p_Procs_Impl.h:486
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
static void pp_Mult_mm_Noether_Filter(p_Field &field, p_Length &length, p_Ord &ord)
Definition: p_Procs_Impl.h:505
static void FastFieldFilter(p_Field &field)
Definition: p_Procs_Impl.h:443
static void FastOrdZeroFilter(p_Ord &ord)
Definition: p_Procs_Impl.h:474
static void p_Add_q__Filter(p_Length &length, p_Ord &ord)
Definition: p_Procs_Impl.h:493
static void FastLengthFilter(p_Length &length)
Definition: p_Procs_Impl.h:454
static void FastOrdFilter(p_Ord &ord)
Definition: p_Procs_Impl.h:465
static void FastP_ProcsFilter(p_Field &field, p_Length &length, p_Ord &ord, const p_Proc proc)
Definition: p_Procs_Impl.h:419
static int index ( p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 597 of file p_Procs_Impl.h.

598 {
599  return length*OrdUnknown + ord;
600 }
static int index ( p_Field  field,
p_Length  length 
)
inlinestatic

Definition at line 602 of file p_Procs_Impl.h.

603 {
604  return field*LengthUnknown + length;
605 }
static int index ( p_Field  field,
p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 607 of file p_Procs_Impl.h.

608 {
609  return field*LengthUnknown*OrdUnknown + length*OrdUnknown + ord;
610 }
static int index ( p_Proc  proc,
p_Field  field,
p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 612 of file p_Procs_Impl.h.

613 {
614  switch(proc)
615  {
616  case p_Delete_Proc:
617  case p_Mult_nn_Proc:
618  case p_Neg_Proc:
619  return field;
620 
622  return length;
623 
624  case p_Copy_Proc:
625  case pp_Mult_mm_Proc:
626  case p_Mult_mm_Proc:
627  case pp_Mult_nn_Proc:
630  return index(field, length);
631 
632  case p_Add_q_Proc:
635  case p_kBucketSetLm_Proc:
636  return index(field, length, ord);
637 
638  case p_Merge_q_Proc:
639  return index(length, ord);
640 
641  default:
642  assume(0);
643  return -1;
644  }
645 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
#define assume(x)
Definition: mod2.h:405
static int index(p_Length length, p_Ord ord)
Definition: p_Procs_Impl.h:597
static int IsValidSpec ( p_Field  field,
p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 573 of file p_Procs_Impl.h.

574 {
575  if (field == FieldUnknown || length == LengthUnknown || ord == OrdUnknown)
576  return 0;
577 
578  if (length >= LengthThree && // i.e. 1, 2, or 3
579  ord > ORD_MAX_N_3) // i.e. OrdNomogPosZero and below
580  return 0;
581 
582  if (length >= LengthTwo && // i.e. 1 or 2
583  ord > ORD_MAX_N_2) // i.e. PosNomog and below
584  return 0;
585 
586  if (length == LengthOne &&
587  ord > ORD_MAX_N_1) // i.e. PosPomogZero and below
588  return 0;
589 
590  // we cover everything for length <= two
591  if (ord == OrdGeneral && length >= LengthTwo)
592  return 0;
593  return 1;
594 }
#define ORD_MAX_N_1
Definition: p_Procs_Impl.h:147
#define ORD_MAX_N_2
Definition: p_Procs_Impl.h:156
#define ORD_MAX_N_3
Definition: p_Procs_Impl.h:169
static int IsZeroOrd ( p_Ord  ord)
inlinestatic
static void NCopy__Filter ( p_Field field)
inlinestatic

Definition at line 486 of file p_Procs_Impl.h.

487 {
488  if (ZP_COPY_FIELD(field)) field = FieldZp;
489 }
#define ZP_COPY_FIELD(field)
Definition: p_Procs_Impl.h:92
static void p_Add_q__Filter ( p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 493 of file p_Procs_Impl.h.

494 {
495  if (IsZeroOrd(ord))
496  {
497  ord = ZeroOrd_2_NonZeroOrd(ord, 0);
498  if (length > LengthGeneral)
499  {
500  length = (p_Length) ((int)length + 1);
501  }
502  }
503 }
p_Length
Definition: p_Procs_Impl.h:127
static int IsZeroOrd(p_Ord ord)
Definition: p_Procs_Impl.h:356
static p_Ord ZeroOrd_2_NonZeroOrd(p_Ord ord, int strict)
Definition: p_Procs_Impl.h:365
static const char* p_FieldEnum_2_String ( p_Field  field)
inlinestatic

Definition at line 203 of file p_Procs_Impl.h.

204 {
205  switch(field)
206  {
207  case FieldGeneral: return "FieldGeneral";
208  case FieldZp: return "FieldZp";
209  case FieldQ: return "FieldQ";
210  case FieldR: return "FieldR";
211  case FieldGF: return "FieldGF";
212 #if HAVE_MORE_FIELDS_IMPLEMENTED
213  case FieldLong_R: return "FieldLong_R";
214  case FieldLong_C: return "FieldLong_C";
215  case FieldZp_a: return "FieldZp_a";
216  case FieldQ_a: return "FieldQ_a";
217 #endif
218 #ifdef HAVE_RINGS
219  case RingGeneral: return "RingGeneral";
220 #endif
221  case FieldUnknown: return "FieldUnknown";
222  }
223  return "NoField_2_String";
224 }
static const char* p_LengthEnum_2_String ( p_Length  length)
inlinestatic

Definition at line 226 of file p_Procs_Impl.h.

227 {
228  switch(length)
229  {
230  case LengthGeneral: return "LengthGeneral";
231  case LengthEight: return "LengthEight";
232  case LengthSeven: return "LengthSeven";
233  case LengthSix: return "LengthSix";
234  case LengthFive: return "LengthFive";
235  case LengthFour: return "LengthFour";
236  case LengthThree: return "LengthThree";
237  case LengthTwo: return "LengthTwo";
238  case LengthOne: return "LengthOne";
239  case LengthUnknown: return "LengthUnknown";
240  }
241  return "NoLength_2_String";
242 }
static const char* p_OrdEnum_2_String ( p_Ord  ord)
inlinestatic

Definition at line 244 of file p_Procs_Impl.h.

245 {
246  switch(ord)
247  {
248  case OrdGeneral: return "OrdGeneral";
249  case OrdPomog: return "OrdPomog";
250  case OrdNomog: return "OrdNomog";
251  case OrdNegPomog: return "OrdNegPomog";
252  case OrdPomogNeg: return "OrdPomogNeg";
253  case OrdPosNomog: return "OrdPosNomog";
254  case OrdNomogPos: return "OrdNomogPos";
255  case OrdPosPosNomog: return "OrdPosPosNomog";
256  case OrdPosNomogPos: return "OrdPosNomogPos";
257  case OrdNegPosNomog: return "OrdNegPosNomog";
258 #ifdef HAVE_LENGTH_DIFF
259  case OrdNegPomogZero: return "OrdNegPomogZero";
260  case OrdPomogNegZero: return "OrdPomogNegZero";
261  case OrdPomogZero: return "OrdPomogZero";
262  case OrdNomogZero: return "OrdNomogZero";
263  case OrdNomogPosZero: return "OrdNomogPosZero";
264  case OrdPosNomogZero: return "OrdPosNomogZero";
265  case OrdPosPosNomogZero: return "OrdPosPosNomogZero";
266  case OrdPosNomogPosZero: return "OrdPosNomogPosZero";
267  case OrdNegPosNomogZero: return "OrdNegPosNomogZero";
268 #endif
269  case OrdUnknown: return "OrdUnknown";
270  }
271  return "NoOrd_2_String";
272 }
static int p_ProcDependsOn_Field ( p_Proc  proc)
inlinestatic

Definition at line 298 of file p_Procs_Impl.h.

299 {
301  proc == p_Merge_q_Proc)
302  return 0;
303  return 1;
304 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
static int p_ProcDependsOn_Length ( p_Proc  proc)
inlinestatic

Definition at line 322 of file p_Procs_Impl.h.

323 {
324  switch(proc)
325  {
326  case p_Delete_Proc:
327  case p_Mult_nn_Proc:
328  case p_Neg_Proc:
329  return 0;
330 
331  default:
332  return 1;
333  }
334 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
static int p_ProcDependsOn_Ord ( p_Proc  proc)
inlinestatic

Definition at line 306 of file p_Procs_Impl.h.

307 {
308  switch(proc)
309  {
310  case p_Add_q_Proc:
313  case p_kBucketSetLm_Proc:
314  case p_Merge_q_Proc:
315  return 1;
316 
317  default:
318  return 0;
319  }
320 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
static const char* p_ProcEnum_2_String ( p_Proc  proc)
inlinestatic

Definition at line 274 of file p_Procs_Impl.h.

275 {
276  switch(proc)
277  {
278  case p_Copy_Proc: return "p_Copy_Proc";
279  case p_Delete_Proc: return "p_Delete_Proc";
280  case p_ShallowCopyDelete_Proc: return "p_ShallowCopyDelete_Proc";
281  case p_Mult_nn_Proc: return "p_Mult_nn_Proc";
282  case pp_Mult_nn_Proc: return "pp_Mult_nn_Proc";
283  case pp_Mult_mm_Proc: return "pp_Mult_mm_Proc";
284  case pp_Mult_mm_Noether_Proc: return "pp_Mult_mm_Noether_Proc";
285  case p_Mult_mm_Proc: return "p_Mult_mm_Proc";
286  case p_Add_q_Proc: return "p_Add_q_Proc";
287  case p_Minus_mm_Mult_qq_Proc: return "p_Minus_mm_Mult_qq_Proc";
288  case p_Neg_Proc: return "p_Neg_Proc";
289  case pp_Mult_Coeff_mm_DivSelect_Proc: return "pp_Mult_Coeff_mm_DivSelect_Proc";
290  case pp_Mult_Coeff_mm_DivSelectMult_Proc: return "pp_Mult_Coeff_mm_DivSelectMult_Proc";
291  case p_Merge_q_Proc: return "p_Merge_q_Proc";
292  case p_kBucketSetLm_Proc: return "p_kBucketSetLm_Proc";
293  case p_Unknown_Proc: return "p_Unknown_Proc";
294  }
295  return "NoProc_2_String";
296 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
static const char* p_ProcField_2_Module ( p_Proc  proc,
p_Field  field 
)
inlinestatic

Definition at line 338 of file p_Procs_Impl.h.

339 {
341  return "FieldIndep";
342  else
343  {
344  if (field > FieldQ) field = FieldGeneral;
345  return p_FieldEnum_2_String(field);
346  }
347 }
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:14
static int p_ProcDependsOn_Field(p_Proc proc)
Definition: p_Procs_Impl.h:298
static const char * p_FieldEnum_2_String(p_Field field)
Definition: p_Procs_Impl.h:203
static void pp_Mult_mm_Noether_Filter ( p_Field field,
p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 505 of file p_Procs_Impl.h.

507 {
508  if (ord == OrdPomog
509  || ord == OrdPomogZero
510  || (ord == OrdPomogNeg && length > LengthTwo)
511 #ifdef HAVE_LENGTH_DIFF
512  || (ord == OrdPomogZero)
513  || (ord == OrdPomogNegZero && length > LengthThree)
514 #endif
515  )
516  {
517  // all the other orderings might occur (remember Mixed Orderings!)
518 #ifdef HAVE_RINGS
519  if (field != RingGeneral)
520 #endif
521  field = FieldGeneral;
522  ord = OrdGeneral;
523  length = LengthGeneral;
524  }
525 }
#define HAVE_LENGTH_DIFF
Definition: p_Procs_Impl.h:86
static p_Ord ZeroOrd_2_NonZeroOrd ( p_Ord  ord,
int  strict 
)
inlinestatic

Definition at line 365 of file p_Procs_Impl.h.

366 {
367  if (IsZeroOrd(ord))
368  {
369  switch (ord)
370  {
371  case OrdPomogZero: return OrdPomog;
372  case OrdNomogZero: return OrdNomog;
373  case OrdNegPomogZero: return OrdNegPomog;
374  case OrdPosNomogZero: return OrdPosNomog;
375  case OrdPosPosNomogZero: return OrdPosPosNomog;
376  case OrdNegPosNomogZero: return OrdNegPosNomog;
377  default:
378  if (strict) return OrdGeneral;
379  else if (ord == OrdPomogNegZero) return OrdPomogNeg;
380  else if (ord == OrdNomogPosZero) return OrdNomogPos;
381  else if (ord == OrdPosNomogPosZero) return OrdPosNomogPos;
382  else return OrdGeneral;
383  }
384  }
385  else
386  {
387  return ord;
388  }
389 }
static int IsZeroOrd(p_Ord ord)
Definition: p_Procs_Impl.h:356