My Project
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions | Variables
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.

233{
234 set_names = 1;
235 p_ProcsSet(r, p_Procs); // changes p_Procs!!!
236 set_names = 0;
237}
STATIC_VAR int set_names
Definition: p_Procs_Set.h:120
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.

222{
223 /*p_Field e_field =*/ (void) p_FieldIs(r);
224 /*p_Length e_length =*/ (void) p_LengthIs(r);
225 /*p_Ord e_ord =*/ (void) p_OrdIs(r);
226
229 ord = p_OrdEnum_2_String(p_OrdIs(r));
230}
static BOOLEAN length(leftv result, leftv arg)
Definition: interval.cc:257
static const char * p_FieldEnum_2_String(p_Field field)
Definition: p_Procs_Impl.h:198
static const char * p_OrdEnum_2_String(p_Ord ord)
Definition: p_Procs_Impl.h:237
static const char * p_LengthEnum_2_String(p_Length length)
Definition: p_Procs_Impl.h:219
static p_Length p_LengthIs(ring r)
Definition: p_Procs_Set.h:40
static p_Ord p_OrdIs(ring r)
Definition: p_Procs_Set.h:73
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.

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
178 CheckProc(pp_Mult_mm_Noether);
182 CheckProc(pp_Mult_Coeff_mm_DivSelectMult);
184 CheckProc(p_kBucketSetLm);
185
186/*
187 assume(p_Procs->pp_Mult_mm_Noether != pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral ||
188 p_Procs->p_Minus_mm_Mult_qq == p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral ||
189 r->OrdSgn == 1 || r->LexOrder);
190*/
191 {
192 _p_procs->p_mm_Mult=_p_procs->p_Mult_mm;
193 _p_procs->pp_mm_Mult=_p_procs->pp_Mult_mm;
194 }
195#ifdef HAVE_PLURAL
196#ifndef SING_NDEBUG
197 if (rIsPluralRing(r))
198 {
199 dReportError("Setting pProcs in p_ProcsSet (rDebugPrint!?)!!!");
200 nc_p_ProcsSet(r, _p_procs); // Setup non-commutative p_Procs table!
201 }
202#endif
203#endif
204#ifdef HAVE_SHIFTBBA
205 if (r->isLPring)
206 {
207 _p_procs->pp_Mult_mm = shift_pp_Mult_mm;
208 _p_procs->p_Mult_mm = shift_p_Mult_mm;
209 _p_procs->p_mm_Mult = shift_p_mm_Mult;
210 _p_procs->pp_mm_Mult = shift_pp_mm_Mult;
211 _p_procs->p_Minus_mm_Mult_qq = shift_p_Minus_mm_Mult_qq;
212 // Unsupported procs:
213 _p_procs->pp_Mult_mm_Noether = shift_pp_Mult_mm_Noether_STUB;
214 _p_procs->pp_Mult_Coeff_mm_DivSelect = shift_pp_Mult_Coeff_mm_DivSelect_STUB;
215 _p_procs->pp_Mult_Coeff_mm_DivSelectMult = shift_pp_Mult_Coeff_mm_DivSelectMult_STUB;
216 }
217#endif
218}
int p
Definition: cfModGcd.cc:4078
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
#define assume(x)
Definition: mod2.h:389
int dReportError(const char *fmt,...)
Definition: dError.cc:44
#define NV_MAX_PRIME
Definition: modulop.h:37
#define NULL
Definition: omList.c:12
p_Length
Definition: p_Procs_Impl.h:123
p_Field
Definition: p_Procs_Impl.h:107
@ FieldZp
Definition: p_Procs_Impl.h:109
@ RingGeneral
Definition: p_Procs_Impl.h:119
@ FieldGeneral
Definition: p_Procs_Impl.h:108
#define SetProcs_ring(field, length, ord)
Definition: p_Procs_Impl.h:698
p_Ord
Definition: p_Procs_Impl.h:136
#define SetProcs(field, length, ord)
Definition: p_Procs_Impl.h:662
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
Definition: old.gring.cc:3187
#define CheckProc(which)
Definition: p_Procs_Set.h:124
STATIC_VAR p_Procs_s * _p_procs
Definition: p_Procs_Set.h:116
static poly p_Neg(poly p, const ring r)
Definition: p_polys.h:1105
static poly p_Add_q(poly p, poly q, const ring r)
Definition: p_polys.h:934
static poly pp_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:1029
static poly p_Merge_q(poly p, poly q, const ring r)
Definition: p_polys.h:1210
static poly pp_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:990
static poly p_ShallowCopyDelete(poly p, const ring r, omBin bin)
Definition: p_polys.h:926
static poly p_Mult_nn(poly p, number n, const ring r)
Definition: p_polys.h:956
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:899
static poly p_Mult_mm(poly p, poly m, const ring r)
Definition: p_polys.h:1049
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:1068
static poly pp_Mult_Coeff_mm_DivSelect(poly p, const poly m, const ring r)
Definition: p_polys.h:1088
static poly p_Copy(poly p, const ring r)
returns a copy of p
Definition: p_polys.h:844
struct p_Procs_s p_Procs_s
Definition: ring.h:23
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
Definition: ring.h:400
poly shift_pp_Mult_Coeff_mm_DivSelect_STUB(poly, const poly, int &, const ring)
Definition: shiftop.cc:319
poly shift_p_Minus_mm_Mult_qq(poly p, poly m, poly q, int &Shorter, const poly, const ring ri)
Definition: shiftop.cc:269
poly shift_pp_mm_Mult(poly p, const poly m, const ring ri)
Definition: shiftop.cc:145
poly shift_pp_Mult_mm_Noether_STUB(poly p, const poly m, const poly, int &ll, const ring ri)
Definition: shiftop.cc:288
poly shift_p_mm_Mult(poly p, const poly m, const ring ri)
Definition: shiftop.cc:212
poly shift_p_Mult_mm(poly p, const poly m, const ring ri)
Definition: shiftop.cc:89
poly shift_pp_Mult_mm(poly p, const poly m, const ring ri)
Definition: shiftop.cc:21
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.