Loading...
Searching...
No Matches
p_Procs.h File Reference
`#include "polys/monomials/ring.h"`

Go to the source code of this file.

## Data Structures

struct | pProcs_s

## Typedefs

typedef poly(* | p_Copy_Proc_Ptr) (poly p, const ring r)
typedef void(* | p_Delete_Proc_Ptr) (poly *p, const ring r)
typedef poly(* | p_ShallowCopyDelete_Proc_Ptr) (poly p, const ring r, omBin dest_bin)
typedef poly(* | p_Mult_nn_Proc_Ptr) (poly p, const number n, const ring r)
typedef poly(* | pp_Mult_nn_Proc_Ptr) (poly p, const number n, const ring r)
typedef poly(* | p_Mult_mm_Proc_Ptr) (poly p, const poly m, const ring r)
typedef poly(* | pp_Mult_mm_Proc_Ptr) (poly p, const poly m, const ring r)
typedef poly(* | pp_Mult_mm_Noether_Proc_Ptr) (poly p, const poly m, const poly spNoether, int &ll, const ring r)
typedef poly(* | p_Add_q_Proc_Ptr) (poly p, poly q, int &shorter, const ring r)
typedef poly(* | p_Minus_mm_Mult_qq_Proc_Ptr) (poly p, poly m, poly q, int &shorter, const poly spNoether, const ring r)
typedef poly(* | p_Neg_Proc_Ptr) (poly p, const ring r)
typedef poly(* | pp_Mult_Coeff_mm_DivSelect_Proc_Ptr) (poly p, const poly m, int &shorter, const ring r)
typedef poly(* | pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr) (poly p, const poly m, const poly a, const poly b, int &shorter, const ring r)
typedef poly(* | p_Merge_q_Proc_Ptr) (poly p, poly q, const ring r)
typedef void(* | p_kBucketSetLm_Proc_Ptr) (kBucket_pt bucket)

## Functions

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

const BOOLEAN | p_procs_dynamic

## Data Structure Documentation

## pProcs_s

struct pProcs_s

Definition at line 40 of file p_Procs.h.

Data Fields
p_Add_q_Proc_Ptr | p_Add_q |
p_Copy_Proc_Ptr | p_Copy |
p_Delete_Proc_Ptr | p_Delete |
p_kBucketSetLm_Proc_Ptr | p_kBucketSetLm |
p_Merge_q_Proc_Ptr | p_Merge_q |
p_Minus_mm_Mult_qq_Proc_Ptr | p_Minus_mm_Mult_qq |
p_Mult_mm_Proc_Ptr | p_mm_Mult |
p_Mult_mm_Proc_Ptr | p_Mult_mm |
p_Mult_nn_Proc_Ptr | p_Mult_nn |
p_Neg_Proc_Ptr | p_Neg |
p_ShallowCopyDelete_Proc_Ptr | p_ShallowCopyDelete |
pp_Mult_mm_Proc_Ptr | pp_mm_Mult |
pp_Mult_Coeff_mm_DivSelect_Proc_Ptr | pp_Mult_Coeff_mm_DivSelect |
pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr | pp_Mult_Coeff_mm_DivSelectMult |
pp_Mult_mm_Proc_Ptr | pp_Mult_mm |
pp_Mult_mm_Noether_Proc_Ptr | pp_Mult_mm_Noether |
pp_Mult_nn_Proc_Ptr | pp_Mult_nn |

## Typedef Documentation

## p_Add_q_Proc_Ptr

typedef poly(* p_Add_q_Proc_Ptr) (poly p, poly q, int &shorter, const ring r)

Definition at line 27 of file p_Procs.h.

## p_Copy_Proc_Ptr

typedef poly(* p_Copy_Proc_Ptr) (poly p, const ring r)

Definition at line 17 of file p_Procs.h.

## p_Delete_Proc_Ptr

typedef void(* p_Delete_Proc_Ptr) (poly *p, const ring r)

Definition at line 18 of file p_Procs.h.

## p_kBucketSetLm_Proc_Ptr

typedef void(* p_kBucketSetLm_Proc_Ptr) (kBucket_pt bucket)

Definition at line 38 of file p_Procs.h.

## p_Merge_q_Proc_Ptr

typedef poly(* p_Merge_q_Proc_Ptr) (poly p, poly q, const ring r)

Definition at line 37 of file p_Procs.h.

## p_Minus_mm_Mult_qq_Proc_Ptr

typedef poly(* p_Minus_mm_Mult_qq_Proc_Ptr) (poly p, poly m, poly q, int &shorter, const poly spNoether, const ring r)

Definition at line 28 of file p_Procs.h.

## p_Mult_mm_Proc_Ptr

typedef poly(* p_Mult_mm_Proc_Ptr) (poly p, const poly m, const ring r)

Definition at line 22 of file p_Procs.h.

## p_Mult_nn_Proc_Ptr

typedef poly(* p_Mult_nn_Proc_Ptr) (poly p, const number n, const ring r)

Definition at line 20 of file p_Procs.h.

## p_Neg_Proc_Ptr

typedef poly(* p_Neg_Proc_Ptr) (poly p, const ring r)

Definition at line 31 of file p_Procs.h.

## p_ShallowCopyDelete_Proc_Ptr

typedef poly(* p_ShallowCopyDelete_Proc_Ptr) (poly p, const ring r, omBin dest_bin)

Definition at line 19 of file p_Procs.h.

## pp_Mult_Coeff_mm_DivSelect_Proc_Ptr

typedef poly(* pp_Mult_Coeff_mm_DivSelect_Proc_Ptr) (poly p, const poly m, int &shorter, const ring r)

Definition at line 32 of file p_Procs.h.

## pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr

typedef poly(* pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr) (poly p, const poly m, const poly a, const poly b, int &shorter, const ring r)

Definition at line 34 of file p_Procs.h.

## pp_Mult_mm_Noether_Proc_Ptr

typedef poly(* pp_Mult_mm_Noether_Proc_Ptr) (poly p, const poly m, const poly spNoether, int &ll, const ring r)

Definition at line 24 of file p_Procs.h.

## pp_Mult_mm_Proc_Ptr

typedef poly(* pp_Mult_mm_Proc_Ptr) (poly p, const poly m, const ring r)

Definition at line 23 of file p_Procs.h.

## pp_Mult_nn_Proc_Ptr

typedef poly(* pp_Mult_nn_Proc_Ptr) (poly p, const number n, const ring r)

Definition at line 21 of file p_Procs.h.

## Function Documentation

## p_Debug_GetProcNames()

void p_Debug_GetProcNames | ( | const ring | r,
|  | p_Procs_s * | p_Procs )

Definition at line 232 of file p_Procs_Set.h.

{
set_names = 1;
p_ProcsSet(r, p_Procs); // changes p_Procs!!!
set_names = 0;
}
set_names
STATIC_VAR int set_names
Definition p_Procs_Set.h:120
p_ProcsSet
void p_ProcsSet(ring r, p_Procs_s *p_Procs)
Definition p_Procs_Set.h:141

## p_Debug_GetSpecNames()

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

Definition at line 221 of file p_Procs_Set.h.

{
/*p_Field e_field =*/ (void) p_FieldIs(r);
/*p_Length e_length =*/ (void) p_LengthIs(r);
/*p_Ord e_ord =*/ (void) p_OrdIs(r);
field = p_FieldEnum_2_String(p_FieldIs(r));
length = p_LengthEnum_2_String(p_LengthIs(r));
ord = p_OrdEnum_2_String(p_OrdIs(r));
}
length
static BOOLEAN length(leftv result, leftv arg)
Definition interval.cc:257
p_FieldEnum_2_String
static const char * p_FieldEnum_2_String(p_Field field)
Definition p_Procs_Impl.h:198
p_OrdEnum_2_String
static const char * p_OrdEnum_2_String(p_Ord ord)
Definition p_Procs_Impl.h:237
p_LengthEnum_2_String
static const char * p_LengthEnum_2_String(p_Length length)
Definition p_Procs_Impl.h:219
p_LengthIs
static p_Length p_LengthIs(ring r)
Definition p_Procs_Set.h:40
p_OrdIs
static p_Ord p_OrdIs(ring r)
Definition p_Procs_Set.h:73
p_FieldIs
static p_Field p_FieldIs(ring r)
Definition p_Procs_Set.h:23

## p_ProcsSet()

void p_ProcsSet | ( | ring | r,
|  | p_Procs_s * | p_Procs )

Definition at line 141 of file p_Procs_Set.h.

{
p_Field field = p_FieldIs(r);
p_Length length = p_LengthIs(r);
p_Ord ord = p_OrdIs(r);
assume(p_Procs != NULL);
memset(p_Procs, 0, sizeof(p_Procs_s));
_p_procs = p_Procs;
SetProcs(field, length, ord);
extern poly p_Mult_nn_pthread(poly p, const number n, const ring r);
#ifdef NV_OPS
if ((field==FieldZp) && (r->cf->ch>NV_MAX_PRIME))
{
// set all (mult/div.) routines to FieldGeneral-variants
SetProcs(FieldGeneral, length,ord); // p_Mult_nn, ...
// set all non-mult/div. routines to FieldZp-variants
SetProcs_nv(FieldZp, length,ord); // p_Delete, p_ShallowCopyDelete...
}
if (field==RingGeneral)
{
if (nCoeff_is_Domain(r->cf))
SetProcs_ring(FieldGeneral,length,ord);
// FieldGeneral vs. RingGeneral: HAVE_ZERODIVISORS
else
SetProcs_ring(RingGeneral,length,ord);
}
#endif
CheckProc(p_Copy);
CheckProc(p_Delete);
CheckProc(p_ShallowCopyDelete);
CheckProc(p_Mult_nn);
CheckProc(pp_Mult_nn);
CheckProc(pp_Mult_mm);
CheckProc(p_Mult_mm);
CheckProc(p_Minus_mm_Mult_qq);
CheckProc(pp_Mult_mm_Noether);
CheckProc(p_Add_q);
CheckProc(p_Neg);
CheckProc(pp_Mult_Coeff_mm_DivSelect);
CheckProc(pp_Mult_Coeff_mm_DivSelectMult);
CheckProc(p_Merge_q);
CheckProc(p_kBucketSetLm);
/*
assume(p_Procs->pp_Mult_mm_Noether != pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral ||
p_Procs->p_Minus_mm_Mult_qq == p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral ||
r->OrdSgn == 1 || r->LexOrder);
*/
{
_p_procs->p_mm_Mult=_p_procs->p_Mult_mm;
_p_procs->pp_mm_Mult=_p_procs->pp_Mult_mm;
}
#ifdef HAVE_PLURAL
#ifndef SING_NDEBUG
if (rIsPluralRing(r))
{
dReportError("Setting pProcs in p_ProcsSet (rDebugPrint!?)!!!");
nc_p_ProcsSet(r, _p_procs); // Setup non-commutative p_Procs table!
}
#endif
#endif
#ifdef HAVE_SHIFTBBA
if (r->isLPring)
{
_p_procs->pp_Mult_mm = shift_pp_Mult_mm;
_p_procs->p_Mult_mm = shift_p_Mult_mm;
_p_procs->p_mm_Mult = shift_p_mm_Mult;
_p_procs->pp_mm_Mult = shift_pp_mm_Mult;
_p_procs->p_Minus_mm_Mult_qq = shift_p_Minus_mm_Mult_qq;
// Unsupported procs:
_p_procs->pp_Mult_mm_Noether = shift_pp_Mult_mm_Noether_STUB;
_p_procs->pp_Mult_Coeff_mm_DivSelect = shift_pp_Mult_Coeff_mm_DivSelect_STUB;
_p_procs->pp_Mult_Coeff_mm_DivSelectMult = shift_pp_Mult_Coeff_mm_DivSelectMult_STUB;
}
#endif
}
p
int p
Definition cfModGcd.cc:4086
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:736
assume
#define assume(x)
Definition mod2.h:389
dReportError
int dReportError(const char *fmt,...)
Definition dError.cc:44
NV_MAX_PRIME
#define NV_MAX_PRIME
Definition modulop.h:37
NULL
#define NULL
Definition omList.c:12
p_Length
p_Length
Definition p_Procs_Impl.h:123
p_Field
p_Field
Definition p_Procs_Impl.h:107
FieldZp
@ FieldZp
Definition p_Procs_Impl.h:109
RingGeneral
@ RingGeneral
Definition p_Procs_Impl.h:119
FieldGeneral
@ FieldGeneral
Definition p_Procs_Impl.h:108
SetProcs_ring
#define SetProcs_ring(field, length, ord)
Definition p_Procs_Impl.h:698
p_Ord
p_Ord
Definition p_Procs_Impl.h:136
SetProcs
#define SetProcs(field, length, ord)
Definition p_Procs_Impl.h:662
nc_p_ProcsSet
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
Definition old.gring.cc:3161
CheckProc
#define CheckProc(which)
Definition p_Procs_Set.h:124
_p_procs
STATIC_VAR p_Procs_s * _p_procs
Definition p_Procs_Set.h:116
p_Neg
static poly p_Neg(poly p, const ring r)
Definition p_polys.h:1114
p_Add_q
static poly p_Add_q(poly p, poly q, const ring r)
Definition p_polys.h:938
pp_Mult_mm
static poly pp_Mult_mm(poly p, poly m, const ring r)
Definition p_polys.h:1033
p_Merge_q
static poly p_Merge_q(poly p, poly q, const ring r)
Definition p_polys.h:1233
pp_Mult_nn
static poly pp_Mult_nn(poly p, number n, const ring r)
Definition p_polys.h:994
p_ShallowCopyDelete
static poly p_ShallowCopyDelete(poly p, const ring r, omBin bin)
Definition p_polys.h:930
p_Mult_nn
static poly p_Mult_nn(poly p, number n, const ring r)
Definition p_polys.h:960
p_Delete
static void p_Delete(poly *p, const ring r)
Definition p_polys.h:903
p_Mult_mm
static poly p_Mult_mm(poly p, poly m, const ring r)
Definition p_polys.h:1053
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:1077
pp_Mult_Coeff_mm_DivSelect
static poly pp_Mult_Coeff_mm_DivSelect(poly p, const poly m, const ring r)
Definition p_polys.h:1097
p_Copy
static poly p_Copy(poly p, const ring r)
returns a copy of p
Definition p_polys.h:848
p_Procs_s
struct p_Procs_s p_Procs_s
Definition ring.h:24
rIsPluralRing
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
Definition ring.h:406
shift_pp_Mult_Coeff_mm_DivSelect_STUB
poly shift_pp_Mult_Coeff_mm_DivSelect_STUB(poly, const poly, int &, const ring)
Definition shiftop.cc:319
shift_p_Minus_mm_Mult_qq
poly shift_p_Minus_mm_Mult_qq(poly p, poly m, poly q, int &Shorter, const poly, const ring ri)
Definition shiftop.cc:269
shift_pp_mm_Mult
poly shift_pp_mm_Mult(poly p, const poly m, const ring ri)
Definition shiftop.cc:145
shift_pp_Mult_mm_Noether_STUB
poly shift_pp_Mult_mm_Noether_STUB(poly p, const poly m, const poly, int &ll, const ring ri)
Definition shiftop.cc:288
shift_p_mm_Mult
poly shift_p_mm_Mult(poly p, const poly m, const ring ri)
Definition shiftop.cc:212
shift_p_Mult_mm
poly shift_p_Mult_mm(poly p, const poly m, const ring ri)
Definition shiftop.cc:89
shift_pp_Mult_mm
poly shift_pp_Mult_mm(poly p, const poly m, const ring ri)
Definition shiftop.cc:21
shift_pp_Mult_Coeff_mm_DivSelectMult_STUB
poly shift_pp_Mult_Coeff_mm_DivSelectMult_STUB(poly, const poly, const poly, const poly, int &, const ring)
Definition shiftop.cc:313

## Variable Documentation

## p_procs_dynamic

const BOOLEAN p_procs_dynamic

extern

Definition at line 30 of file p_Procs_Dynamic.cc.