My Project  UNKNOWN_GIT_VERSION
Macros | Enumerations | Functions
p_Procs_Impl.h File Reference
#include "misc/auxiliary.h"

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)
 
#define SetProcs_ring(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_Field &field, p_Length &length, p_Ord &ord)
 
static void p_Neg__Filter (p_Field &field, 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

◆ HAVE_FAST_FIELD

#define HAVE_FAST_FIELD   0

Definition at line 56 of file p_Procs_Impl.h.

◆ HAVE_FAST_LENGTH

#define HAVE_FAST_LENGTH   0

Definition at line 66 of file p_Procs_Impl.h.

◆ HAVE_FAST_ORD

#define HAVE_FAST_ORD   0

Definition at line 76 of file p_Procs_Impl.h.

◆ HAVE_FAST_P_PROCS

#define HAVE_FAST_P_PROCS   0

Definition at line 47 of file p_Procs_Impl.h.

◆ HAVE_FAST_ZERO_ORD

#define HAVE_FAST_ZERO_ORD   0

Definition at line 84 of file p_Procs_Impl.h.

◆ HAVE_LENGTH_DIFF

#define HAVE_LENGTH_DIFF

Definition at line 88 of file p_Procs_Impl.h.

◆ ORD_MAX_N_1

#define ORD_MAX_N_1   OrdNomog

Definition at line 142 of file p_Procs_Impl.h.

◆ ORD_MAX_N_2

#define ORD_MAX_N_2   OrdPomogNeg

Definition at line 151 of file p_Procs_Impl.h.

◆ ORD_MAX_N_3

#define ORD_MAX_N_3   OrdNegPosNomog

Definition at line 164 of file p_Procs_Impl.h.

◆ SetProc

#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) \

Definition at line 651 of file p_Procs_Impl.h.

◆ SetProcs

#define SetProcs (   field,
  length,
  ord 
)
Value:
do \
{ \
SetProc(p_Copy, field, length, OrdGeneral); \
SetProc(p_Delete, field, LengthGeneral, OrdGeneral); \
SetProc(p_Mult_nn, field, LengthGeneral, 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(p_Neg, field, LengthGeneral, OrdGeneral); \
SetProc(pp_Mult_Coeff_mm_DivSelectMult, field, length, OrdGeneral); \
SetProc(p_Merge_q, FieldGeneral, length, ord); \
SetProc(p_kBucketSetLm, field, length, ord); \
} \
while (0)

Definition at line 662 of file p_Procs_Impl.h.

◆ SetProcs_ring

#define SetProcs_ring (   field,
  length,
  ord 
)
Value:
do \
{ \
SetProc(p_Add_q, FieldGeneral, length, ord); \
SetProc(p_Merge_q, FieldGeneral, length, ord); \
SetProc(p_Mult_nn, field, LengthGeneral, OrdGeneral); \
SetProc(pp_Mult_nn, field, LengthGeneral, 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(pp_Mult_Coeff_mm_DivSelectMult, field, length, OrdGeneral); \
} \
while (0)

Definition at line 698 of file p_Procs_Impl.h.

◆ ZP_COPY_FIELD

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

Definition at line 93 of file p_Procs_Impl.h.

Enumeration Type Documentation

◆ p_Field

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

Definition at line 106 of file p_Procs_Impl.h.

107 {
108  FieldGeneral = 0,
109  FieldZp,
110  FieldQ,
111  FieldR,
112  FieldGF,
113 #if HAVE_MORE_FIELDS_IMPLEMENTED
114  FieldLong_R,
115  FieldLong_C,
116  FieldZp_a,
117  FieldQ_a,
118 #endif
119  RingGeneral,
121 } p_Field;

◆ p_Length

enum p_Length
Enumerator
LengthGeneral 
LengthEight 
LengthSeven 
LengthSix 
LengthFive 
LengthFour 
LengthThree 
LengthTwo 
LengthOne 
LengthUnknown 

Definition at line 122 of file p_Procs_Impl.h.

123 {
124  LengthGeneral = 0, // n >= 1
125  LengthEight, // n == 8
126  LengthSeven,
127  LengthSix,
128  LengthFive,
129  LengthFour,
130  LengthThree,
131  LengthTwo,
132  LengthOne,
134 } p_Length;

◆ p_Ord

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 135 of file p_Procs_Impl.h.

136 {
137  OrdGeneral = 0,
138  // ordsgn
139  // 0 1 i n-1 n n_min Example
140  OrdPomog, // + + + + + 1 (lp,C)
141  OrdNomog, // - - - - - 1 (ls, c), (ds, c)
142 #define ORD_MAX_N_1 OrdNomog
143 
144 #ifdef HAVE_LENGTH_DIFF
145  OrdPomogZero, // + + + + 0 2 (Dp, C), Even vars
146  OrdNomogZero, // - - - - 0 2 (ds, c), Even vars
147 #endif
148 
149  OrdNegPomog, // - + + + + 2 (c, lp), (Ds, c)
150  OrdPomogNeg, // + + + + - 2 (lp, c)
151 #define ORD_MAX_N_2 OrdPomogNeg
152 
153  OrdPosNomog, // + - - - + 3 (dp, c) (for n == 2, use PomogNeg)
154  OrdNomogPos, // - - - - + 3 (ls, C) (for n == 2, use NegPomog)
155 
156 #ifdef HAVE_LENGTH_DIFF
157  OrdNegPomogZero, // - + + + 0 3 (c, lp), (Ds, c)
158  OrdPomogNegZero, // + + + - 0 3 (lp, c)
159 #endif
160 
161  OrdPosPosNomog, // + + - - - 3 (C, dp)
162  OrdPosNomogPos, // + - - - + 3 (dp, C)
163  OrdNegPosNomog, // - + - - - 3 (c, dp)
164 #define ORD_MAX_N_3 OrdNegPosNomog
165 
166 #ifdef HAVE_LENGTH_DIFF
167  OrdNomogPosZero, // - - - + 0 4 (ls, C) (for n == 3, use NegPomogZero)
168  OrdPosNomogZero, // + - - - 0 4 (dp, c) (for n == 3, use PomogNegZero)
169 
170  OrdPosPosNomogZero,// + + - - 0 4 (C, dp)
171  OrdPosNomogPosZero,// + - - + 0 4 (dp, C)
172  OrdNegPosNomogZero,// - + - - 0 4 (c, dp)
173 #endif
174 
175  OrdUnknown
176 } p_Ord;

◆ p_Proc

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 178 of file p_Procs_Impl.h.

Function Documentation

◆ FastFieldFilter()

static void FastFieldFilter ( p_Field field)
inlinestatic

Definition at line 431 of file p_Procs_Impl.h.

432 {
433  if (HAVE_FAST_FIELD <= 0 ||
434  (HAVE_FAST_FIELD == 1 && field != FieldZp) ||
435  (field != FieldZp && field != FieldQ))
436  if (field != RingGeneral) field = FieldGeneral;
437 }

◆ FastLengthFilter()

static void FastLengthFilter ( p_Length length)
inlinestatic

Definition at line 439 of file p_Procs_Impl.h.

440 {
441  if ((HAVE_FAST_LENGTH == 3 && length <= LengthFive) ||
442  (HAVE_FAST_LENGTH == 2 && length <= LengthFour) ||
443  (HAVE_FAST_LENGTH == 1 && length <= LengthTwo) ||
444  (HAVE_FAST_LENGTH <= 0))
445  {
447  }
448 }

◆ FastOrdFilter()

static void FastOrdFilter ( p_Ord ord)
inlinestatic

Definition at line 450 of file p_Procs_Impl.h.

451 {
452  if ((HAVE_FAST_ORD == 3 && ord >= OrdNomogPosZero) ||
453  (HAVE_FAST_ORD == 2 && ord >= OrdPosNomog) ||
454  (HAVE_FAST_ORD == 1 && ord >= OrdPomogZero) ||
455  (HAVE_FAST_ORD <= 0))
456  ord = OrdGeneral;
457 }

◆ FastOrdZeroFilter()

static void FastOrdZeroFilter ( p_Ord ord)
inlinestatic

Definition at line 459 of file p_Procs_Impl.h.

460 {
461  if (IsZeroOrd(ord))
462  {
463  if ((HAVE_FAST_ZERO_ORD == 1 && (ord != OrdPosNomogPosZero &&
464  ord != OrdNomogPosZero &&
465  ord != OrdPomogNegZero)) ||
466  (HAVE_FAST_ZERO_ORD <= 0))
467  ord = ZeroOrd_2_NonZeroOrd(ord, 1);
468  }
469 }

◆ FastP_ProcsFilter()

static void FastP_ProcsFilter ( p_Field field,
p_Length length,
p_Ord ord,
const p_Proc  proc 
)
inlinestatic

Definition at line 410 of file p_Procs_Impl.h.

411 {
412  if (HAVE_FAST_P_PROCS >= 5) return;
413 
414  if (HAVE_FAST_P_PROCS < 3 && field == FieldQ)
415  field = FieldGeneral;
416 
417  if ((HAVE_FAST_P_PROCS == 0) ||
418  (HAVE_FAST_P_PROCS <= 4 && field != FieldZp && field != FieldQ &&
419  proc != p_Merge_q_Proc))
420  {
421  if (field != RingGeneral) field = FieldGeneral;
423  ord = OrdGeneral;
424  return;
425  }
426  if (HAVE_FAST_P_PROCS == 1 ||
427  (HAVE_FAST_P_PROCS == 4 && field != FieldZp && proc != p_Merge_q_Proc))
428  ord = OrdGeneral;
429 }

◆ FastProcFilter()

static void FastProcFilter ( p_Proc  proc,
p_Field field,
p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 518 of file p_Procs_Impl.h.

520 {
521  switch(proc)
522  {
523  case p_Add_q_Proc:
524  case p_Merge_q_Proc:
525  p_Add_q__Filter(field, length, ord);
526  break;
527 
528  case p_Neg_Proc:
529  p_Neg__Filter(field, length, ord);
530  break;
531 
532  case p_Copy_Proc:
533  case p_Delete_Proc:
534  NCopy__Filter(field);
535  break;
536 
538  pp_Mult_mm_Noether_Filter(field, length, ord);
539  break;
540 
542  if (length == LengthOne || length == LengthTwo)
543  {
544  if (field != RingGeneral) field = FieldGeneral;
546  ord = OrdGeneral;
547  return;
548  }
549  break;
550 
551  default: break;
552  }
553 
554  FastOrdFilter(ord);
555  FastOrdZeroFilter(ord);
557  FastFieldFilter(field);
558  FastP_ProcsFilter(field, length, ord, proc);
559 #ifdef p_Procs_Static
560  StaticKernelFilter(field, length, ord, proc);
561 #endif
562 }

◆ index() [1/4]

static int index ( p_Field  field,
p_Length  length 
)
inlinestatic

Definition at line 597 of file p_Procs_Impl.h.

598 {
599  return field*LengthUnknown + length;
600 }

◆ index() [2/4]

static int index ( p_Field  field,
p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 602 of file p_Procs_Impl.h.

603 {
604  return field*LengthUnknown*OrdUnknown + length*OrdUnknown + ord;
605 }

◆ index() [3/4]

static int index ( p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 592 of file p_Procs_Impl.h.

593 {
594  return length*OrdUnknown + ord;
595 }

◆ index() [4/4]

static int index ( p_Proc  proc,
p_Field  field,
p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 607 of file p_Procs_Impl.h.

608 {
609  switch(proc)
610  {
611  case p_Delete_Proc:
612  case p_Mult_nn_Proc:
613  case p_Neg_Proc:
614  return field;
615 
617  return length;
618 
619  case p_Copy_Proc:
620  case pp_Mult_mm_Proc:
621  case p_Mult_mm_Proc:
622  case pp_Mult_nn_Proc:
625  return index(field, length);
626 
627  case p_Add_q_Proc:
630  case p_kBucketSetLm_Proc:
631  return index(field, length, ord);
632 
633  case p_Merge_q_Proc:
634  return index(length, ord);
635 
636  default:
637  assume(0);
638  return -1;
639  }
640 }

◆ IsValidSpec()

static int IsValidSpec ( p_Field  field,
p_Length  length,
p_Ord  ord 
)
inlinestatic

Definition at line 565 of file p_Procs_Impl.h.

566 {
567  if (field == FieldUnknown || length == LengthUnknown || ord == OrdUnknown)
568  return 0;
569 
570  if (length >= LengthThree && // i.e. 1, 2, or 3
571  ord > ORD_MAX_N_3) // i.e. OrdNomogPosZero and below
572  return 0;
573 
574  if (length >= LengthTwo && // i.e. 1 or 2
575  ord > ORD_MAX_N_2) // i.e. PosNomog and below
576  return 0;
577 
578  if (length == LengthOne &&
579  ord > ORD_MAX_N_1) // i.e. PosPomogZero and below
580  return 0;
581 
582  // we cover everything for length <= two
583  if (ord == OrdGeneral && length > LengthTwo)
584  return 0;
585 #ifndef HAVE_RINGS
586  if (field == RingGeneral) return 0;
587 #endif
588  return 1;
589 }

◆ IsZeroOrd()

static int IsZeroOrd ( p_Ord  ord)
inlinestatic

Definition at line 349 of file p_Procs_Impl.h.

350 {
351  return (ord == OrdPomogZero || ord == OrdNomogZero ||
352  ord == OrdNegPomogZero || ord == OrdPosNomogZero ||
353  ord == OrdPomogNegZero || ord == OrdNomogPosZero ||
354  ord == OrdPosNomogPosZero || ord == OrdPosPosNomogZero ||
355  ord == OrdNegPosNomogZero);
356 }

◆ NCopy__Filter()

static void NCopy__Filter ( p_Field field)
inlinestatic

Definition at line 471 of file p_Procs_Impl.h.

472 {
473  if (ZP_COPY_FIELD(field)) field = FieldZp;
474  else if (field == RingGeneral) field = FieldGeneral;
475 }

◆ p_Add_q__Filter()

static void p_Add_q__Filter ( p_Field field,
p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 479 of file p_Procs_Impl.h.

480 {
481  if (IsZeroOrd(ord))
482  {
483  ord = ZeroOrd_2_NonZeroOrd(ord, 0);
484  if (length > LengthGeneral)
485  {
486  length = (p_Length) ((int)length + 1);
487  }
488  }
489  if (field == RingGeneral) field = FieldGeneral;
490 }

◆ p_FieldEnum_2_String()

static const char* p_FieldEnum_2_String ( p_Field  field)
inlinestatic

Definition at line 198 of file p_Procs_Impl.h.

199 {
200  switch(field)
201  {
202  case FieldGeneral: return "FieldGeneral";
203  case FieldZp: return "FieldZp";
204  case FieldQ: return "FieldQ";
205  case FieldR: return "FieldR";
206  case FieldGF: return "FieldGF";
207 #if HAVE_MORE_FIELDS_IMPLEMENTED
208  case FieldLong_R: return "FieldLong_R";
209  case FieldLong_C: return "FieldLong_C";
210  case FieldZp_a: return "FieldZp_a";
211  case FieldQ_a: return "FieldQ_a";
212 #endif
213  case RingGeneral: return "RingGeneral";
214  case FieldUnknown: return "FieldUnknown";
215  }
216  return "NoField_2_String";
217 }

◆ p_LengthEnum_2_String()

static const char* p_LengthEnum_2_String ( p_Length  length)
inlinestatic

Definition at line 219 of file p_Procs_Impl.h.

220 {
221  switch(length)
222  {
223  case LengthGeneral: return "LengthGeneral";
224  case LengthEight: return "LengthEight";
225  case LengthSeven: return "LengthSeven";
226  case LengthSix: return "LengthSix";
227  case LengthFive: return "LengthFive";
228  case LengthFour: return "LengthFour";
229  case LengthThree: return "LengthThree";
230  case LengthTwo: return "LengthTwo";
231  case LengthOne: return "LengthOne";
232  case LengthUnknown: return "LengthUnknown";
233  }
234  return "NoLength_2_String";
235 }

◆ p_Neg__Filter()

static void p_Neg__Filter ( p_Field field,
p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 492 of file p_Procs_Impl.h.

493 {
494  if (field == RingGeneral) field = FieldGeneral;
496  ord =OrdGeneral;
497 }

◆ p_OrdEnum_2_String()

static const char* p_OrdEnum_2_String ( p_Ord  ord)
inlinestatic

Definition at line 237 of file p_Procs_Impl.h.

238 {
239  switch(ord)
240  {
241  case OrdGeneral: return "OrdGeneral";
242  case OrdPomog: return "OrdPomog";
243  case OrdNomog: return "OrdNomog";
244  case OrdNegPomog: return "OrdNegPomog";
245  case OrdPomogNeg: return "OrdPomogNeg";
246  case OrdPosNomog: return "OrdPosNomog";
247  case OrdNomogPos: return "OrdNomogPos";
248  case OrdPosPosNomog: return "OrdPosPosNomog";
249  case OrdPosNomogPos: return "OrdPosNomogPos";
250  case OrdNegPosNomog: return "OrdNegPosNomog";
251 #ifdef HAVE_LENGTH_DIFF
252  case OrdNegPomogZero: return "OrdNegPomogZero";
253  case OrdPomogNegZero: return "OrdPomogNegZero";
254  case OrdPomogZero: return "OrdPomogZero";
255  case OrdNomogZero: return "OrdNomogZero";
256  case OrdNomogPosZero: return "OrdNomogPosZero";
257  case OrdPosNomogZero: return "OrdPosNomogZero";
258  case OrdPosPosNomogZero: return "OrdPosPosNomogZero";
259  case OrdPosNomogPosZero: return "OrdPosNomogPosZero";
260  case OrdNegPosNomogZero: return "OrdNegPosNomogZero";
261 #endif
262  case OrdUnknown: return "OrdUnknown";
263  }
264  return "NoOrd_2_String";
265 }

◆ p_ProcDependsOn_Field()

static int p_ProcDependsOn_Field ( p_Proc  proc)
inlinestatic

Definition at line 291 of file p_Procs_Impl.h.

292 {
294  proc == p_Merge_q_Proc)
295  return 0;
296  return 1;
297 }

◆ p_ProcDependsOn_Length()

static int p_ProcDependsOn_Length ( p_Proc  proc)
inlinestatic

Definition at line 315 of file p_Procs_Impl.h.

316 {
317  switch(proc)
318  {
319  case p_Delete_Proc:
320  case p_Mult_nn_Proc:
321  case p_Neg_Proc:
322  return 0;
323 
324  default:
325  return 1;
326  }
327 }

◆ p_ProcDependsOn_Ord()

static int p_ProcDependsOn_Ord ( p_Proc  proc)
inlinestatic

Definition at line 299 of file p_Procs_Impl.h.

300 {
301  switch(proc)
302  {
303  case p_Add_q_Proc:
306  case p_kBucketSetLm_Proc:
307  case p_Merge_q_Proc:
308  return 1;
309 
310  default:
311  return 0;
312  }
313 }

◆ p_ProcEnum_2_String()

static const char* p_ProcEnum_2_String ( p_Proc  proc)
inlinestatic

Definition at line 267 of file p_Procs_Impl.h.

268 {
269  switch(proc)
270  {
271  case p_Copy_Proc: return "p_Copy_Proc";
272  case p_Delete_Proc: return "p_Delete_Proc";
273  case p_ShallowCopyDelete_Proc: return "p_ShallowCopyDelete_Proc";
274  case p_Mult_nn_Proc: return "p_Mult_nn_Proc";
275  case pp_Mult_nn_Proc: return "pp_Mult_nn_Proc";
276  case pp_Mult_mm_Proc: return "pp_Mult_mm_Proc";
277  case pp_Mult_mm_Noether_Proc: return "pp_Mult_mm_Noether_Proc";
278  case p_Mult_mm_Proc: return "p_Mult_mm_Proc";
279  case p_Add_q_Proc: return "p_Add_q_Proc";
280  case p_Minus_mm_Mult_qq_Proc: return "p_Minus_mm_Mult_qq_Proc";
281  case p_Neg_Proc: return "p_Neg_Proc";
282  case pp_Mult_Coeff_mm_DivSelect_Proc: return "pp_Mult_Coeff_mm_DivSelect_Proc";
283  case pp_Mult_Coeff_mm_DivSelectMult_Proc: return "pp_Mult_Coeff_mm_DivSelectMult_Proc";
284  case p_Merge_q_Proc: return "p_Merge_q_Proc";
285  case p_kBucketSetLm_Proc: return "p_kBucketSetLm_Proc";
286  case p_Unknown_Proc: return "p_Unknown_Proc";
287  }
288  return "NoProc_2_String";
289 }

◆ p_ProcField_2_Module()

static const char* p_ProcField_2_Module ( p_Proc  proc,
p_Field  field 
)
inlinestatic

Definition at line 331 of file p_Procs_Impl.h.

332 {
334  return "FieldIndep";
335  else
336  {
337  if (field > FieldQ) field = FieldGeneral;
338  return p_FieldEnum_2_String(field);
339  }
340 }

◆ pp_Mult_mm_Noether_Filter()

static void pp_Mult_mm_Noether_Filter ( p_Field field,
p_Length length,
p_Ord ord 
)
inlinestatic

Definition at line 499 of file p_Procs_Impl.h.

501 {
502  if (ord == OrdPomog
503  || ord == OrdPomogZero
504  || (ord == OrdPomogNeg && length > LengthTwo)
505 #ifdef HAVE_LENGTH_DIFF
506  || (ord == OrdPomogZero)
507  || (ord == OrdPomogNegZero && length > LengthThree)
508 #endif
509  )
510  {
511  // all the other orderings might occur (remember Mixed Orderings!)
512  if (field != RingGeneral) field = FieldGeneral;
513  ord = OrdGeneral;
515  }
516 }

◆ ZeroOrd_2_NonZeroOrd()

static p_Ord ZeroOrd_2_NonZeroOrd ( p_Ord  ord,
int  strict 
)
inlinestatic

Definition at line 358 of file p_Procs_Impl.h.

359 {
360  if (IsZeroOrd(ord))
361  {
362  switch (ord)
363  {
364  case OrdPomogZero: return OrdPomog;
365  case OrdNomogZero: return OrdNomog;
366  case OrdNegPomogZero: return OrdNegPomog;
367  case OrdPosNomogZero: return OrdPosNomog;
368  case OrdPosPosNomogZero: return OrdPosPosNomog;
369  case OrdNegPosNomogZero: return OrdNegPosNomog;
370  default:
371  if (strict) return OrdGeneral;
372  else if (ord == OrdPomogNegZero) return OrdPomogNeg;
373  else if (ord == OrdNomogPosZero) return OrdNomogPos;
374  else if (ord == OrdPosNomogPosZero) return OrdPosNomogPos;
375  else return OrdGeneral;
376  }
377  }
378  else
379  {
380  return ord;
381  }
382 }
FieldGeneral
@ FieldGeneral
Definition: p_Procs_Impl.h:112
p_Delete_Proc
@ p_Delete_Proc
Definition: p_Procs_Impl.h:181
NCopy__Filter
static void NCopy__Filter(p_Field &field)
Definition: p_Procs_Impl.h:471
OrdPosNomogZero
@ OrdPosNomogZero
Definition: p_Procs_Impl.h:168
p_Mult_mm_Proc
@ p_Mult_mm_Proc
Definition: p_Procs_Impl.h:187
LengthGeneral
@ LengthGeneral
Definition: p_Procs_Impl.h:124
FastFieldFilter
static void FastFieldFilter(p_Field &field)
Definition: p_Procs_Impl.h:431
HAVE_FAST_LENGTH
#define HAVE_FAST_LENGTH
Definition: p_Procs_Impl.h:66
HAVE_FAST_P_PROCS
#define HAVE_FAST_P_PROCS
Definition: p_Procs_Impl.h:47
p_Unknown_Proc
@ p_Unknown_Proc
Definition: p_Procs_Impl.h:195
p_Merge_q
static poly p_Merge_q(poly p, poly q, const ring r)
Definition: p_polys.h:1149
p_kBucketSetLm_Proc
@ p_kBucketSetLm_Proc
Definition: p_Procs_Impl.h:194
p_Ord
p_Ord
Definition: p_Procs_Impl.h:135
HAVE_FAST_ORD
#define HAVE_FAST_ORD
Definition: p_Procs_Impl.h:76
p_Mult_mm
static poly p_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:998
p_Neg
static poly p_Neg(poly p, const ring r)
Definition: p_polys.h:1044
LengthFive
@ LengthFive
Definition: p_Procs_Impl.h:128
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:1007
OrdNegPosNomogZero
@ OrdNegPosNomogZero
Definition: p_Procs_Impl.h:172
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:885
LengthOne
@ LengthOne
Definition: p_Procs_Impl.h:132
OrdNomog
@ OrdNomog
Definition: p_Procs_Impl.h:141
FastP_ProcsFilter
static void FastP_ProcsFilter(p_Field &field, p_Length &length, p_Ord &ord, const p_Proc proc)
Definition: p_Procs_Impl.h:410
pp_Mult_mm
static poly pp_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:988
LengthEight
@ LengthEight
Definition: p_Procs_Impl.h:125
FieldLong_R
@ FieldLong_R
Definition: p_Procs_Impl.h:118
p_Neg__Filter
static void p_Neg__Filter(p_Field &field, p_Length &length, p_Ord &ord)
Definition: p_Procs_Impl.h:492
FastOrdZeroFilter
static void FastOrdZeroFilter(p_Ord &ord)
Definition: p_Procs_Impl.h:459
p_Field
p_Field
Definition: p_Procs_Impl.h:106
pp_Mult_mm_Noether_Filter
static void pp_Mult_mm_Noether_Filter(p_Field &field, p_Length &length, p_Ord &ord)
Definition: p_Procs_Impl.h:499
pp_Mult_Coeff_mm_DivSelect
static poly pp_Mult_Coeff_mm_DivSelect(poly p, const poly m, const ring r)
Definition: p_polys.h:1027
OrdPosNomogPosZero
@ OrdPosNomogPosZero
Definition: p_Procs_Impl.h:171
FieldLong_C
@ FieldLong_C
Definition: p_Procs_Impl.h:119
OrdUnknown
@ OrdUnknown
Definition: p_Procs_Impl.h:175
FieldUnknown
@ FieldUnknown
Definition: p_Procs_Impl.h:124
LengthTwo
@ LengthTwo
Definition: p_Procs_Impl.h:131
FieldQ_a
@ FieldQ_a
Definition: p_Procs_Impl.h:121
OrdPomogZero
@ OrdPomogZero
Definition: p_Procs_Impl.h:145
OrdNegPomog
@ OrdNegPomog
Definition: p_Procs_Impl.h:149
p_Copy
static poly p_Copy(poly p, const ring r)
returns a copy of p
Definition: p_polys.h:813
ZeroOrd_2_NonZeroOrd
static p_Ord ZeroOrd_2_NonZeroOrd(p_Ord ord, int strict)
Definition: p_Procs_Impl.h:358
OrdPosNomogPos
@ OrdPosNomogPos
Definition: p_Procs_Impl.h:162
OrdPosNomog
@ OrdPosNomog
Definition: p_Procs_Impl.h:153
OrdPomogNegZero
@ OrdPomogNegZero
Definition: p_Procs_Impl.h:158
ORD_MAX_N_3
#define ORD_MAX_N_3
Definition: p_Procs_Impl.h:164
pp_Mult_mm_Proc
@ pp_Mult_mm_Proc
Definition: p_Procs_Impl.h:185
OrdNegPomogZero
@ OrdNegPomogZero
Definition: p_Procs_Impl.h:157
p_ProcDependsOn_Field
static int p_ProcDependsOn_Field(p_Proc proc)
Definition: p_Procs_Impl.h:291
LengthFour
@ LengthFour
Definition: p_Procs_Impl.h:129
ORD_MAX_N_2
#define ORD_MAX_N_2
Definition: p_Procs_Impl.h:151
OrdNomogPosZero
@ OrdNomogPosZero
Definition: p_Procs_Impl.h:167
OrdPomog
@ OrdPomog
Definition: p_Procs_Impl.h:140
LengthThree
@ LengthThree
Definition: p_Procs_Impl.h:130
OrdNegPosNomog
@ OrdNegPosNomog
Definition: p_Procs_Impl.h:163
LengthSeven
@ LengthSeven
Definition: p_Procs_Impl.h:126
FieldZp_a
@ FieldZp_a
Definition: p_Procs_Impl.h:120
HAVE_LENGTH_DIFF
#define HAVE_LENGTH_DIFF
Definition: p_Procs_Impl.h:88
p_Copy_Proc
@ p_Copy_Proc
Definition: p_Procs_Impl.h:180
HAVE_FAST_ZERO_ORD
#define HAVE_FAST_ZERO_ORD
Definition: p_Procs_Impl.h:84
pp_Mult_Coeff_mm_DivSelect_Proc
@ pp_Mult_Coeff_mm_DivSelect_Proc
Definition: p_Procs_Impl.h:191
p_Minus_mm_Mult_qq_Proc
@ p_Minus_mm_Mult_qq_Proc
Definition: p_Procs_Impl.h:189
p_Add_q_Proc
@ p_Add_q_Proc
Definition: p_Procs_Impl.h:188
LengthSix
@ LengthSix
Definition: p_Procs_Impl.h:127
FastOrdFilter
static void FastOrdFilter(p_Ord &ord)
Definition: p_Procs_Impl.h:450
p_Proc
p_Proc
Definition: p_Procs_Impl.h:178
OrdGeneral
@ OrdGeneral
Definition: p_Procs_Impl.h:137
p_Delete
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:858
p_Add_q
static poly p_Add_q(poly p, poly q, const ring r)
Definition: p_polys.h:893
FastLengthFilter
static void FastLengthFilter(p_Length &length)
Definition: p_Procs_Impl.h:439
ZP_COPY_FIELD
#define ZP_COPY_FIELD(field)
Definition: p_Procs_Impl.h:93
IsZeroOrd
static int IsZeroOrd(p_Ord ord)
Definition: p_Procs_Impl.h:349
LengthUnknown
@ LengthUnknown
Definition: p_Procs_Impl.h:133
p_Merge_q_Proc
@ p_Merge_q_Proc
Definition: p_Procs_Impl.h:193
p_Length
p_Length
Definition: p_Procs_Impl.h:122
ORD_MAX_N_1
#define ORD_MAX_N_1
Definition: p_Procs_Impl.h:142
OrdNomogPos
@ OrdNomogPos
Definition: p_Procs_Impl.h:154
OrdPosPosNomog
@ OrdPosPosNomog
Definition: p_Procs_Impl.h:161
p_ShallowCopyDelete_Proc
@ p_ShallowCopyDelete_Proc
Definition: p_Procs_Impl.h:182
FieldR
@ FieldR
Definition: p_Procs_Impl.h:115
p_Neg_Proc
@ p_Neg_Proc
Definition: p_Procs_Impl.h:190
assume
#define assume(x)
Definition: mod2.h:390
OrdPomogNeg
@ OrdPomogNeg
Definition: p_Procs_Impl.h:150
OrdNomogZero
@ OrdNomogZero
Definition: p_Procs_Impl.h:146
OrdPosPosNomogZero
@ OrdPosPosNomogZero
Definition: p_Procs_Impl.h:170
HAVE_FAST_FIELD
#define HAVE_FAST_FIELD
Definition: p_Procs_Impl.h:56
pp_Mult_nn
static poly pp_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:949
FieldGF
@ FieldGF
Definition: p_Procs_Impl.h:116
pp_Mult_Coeff_mm_DivSelectMult_Proc
@ pp_Mult_Coeff_mm_DivSelectMult_Proc
Definition: p_Procs_Impl.h:192
p_FieldEnum_2_String
static const char * p_FieldEnum_2_String(p_Field field)
Definition: p_Procs_Impl.h:198
p_Mult_nn_Proc
@ p_Mult_nn_Proc
Definition: p_Procs_Impl.h:183
pp_Mult_nn_Proc
@ pp_Mult_nn_Proc
Definition: p_Procs_Impl.h:184
RingGeneral
@ RingGeneral
Definition: p_Procs_Impl.h:123
pp_Mult_mm_Noether_Proc
@ pp_Mult_mm_Noether_Proc
Definition: p_Procs_Impl.h:186
proc
unsigned char * proc[NUM_PROC]
Definition: checklibs.c:16
p_Add_q__Filter
static void p_Add_q__Filter(p_Field &field, p_Length &length, p_Ord &ord)
Definition: p_Procs_Impl.h:479
index
static int index(p_Length length, p_Ord ord)
Definition: p_Procs_Impl.h:592
p_Mult_nn
static poly p_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:915
FieldZp
@ FieldZp
Definition: p_Procs_Impl.h:113
FieldQ
@ FieldQ
Definition: p_Procs_Impl.h:114