1 | /**************************************** |
---|
2 | * Computer Algebra System SINGULAR * |
---|
3 | ****************************************/ |
---|
4 | |
---|
5 | /*************************************************************** |
---|
6 | * File: pProcs.h |
---|
7 | * Purpose: declaration of primitive procs for polys |
---|
8 | * Author: obachman (Olaf Bachmann) |
---|
9 | * Created: 8/00 |
---|
10 | * Version: $Id: p_Procs.h,v 1.2 2008-03-19 17:44:10 Singular Exp $ |
---|
11 | *******************************************************************/ |
---|
12 | #ifndef P_PROCS_H |
---|
13 | #define P_PROCS_H |
---|
14 | #include "structs.h" |
---|
15 | |
---|
16 | /*------------- p_Proc stuff ----------------------*/ |
---|
17 | typedef poly (*p_Copy_Proc_Ptr)(poly p, const ring r); |
---|
18 | typedef void (*p_Delete_Proc_Ptr)(poly *p, const ring r); |
---|
19 | typedef poly (*p_ShallowCopyDelete_Proc_Ptr)(poly p, const ring r, omBin_s* dest_bin); |
---|
20 | typedef poly (*p_Mult_nn_Proc_Ptr)(poly p, const number n, const ring r); |
---|
21 | typedef poly (*pp_Mult_nn_Proc_Ptr)(poly p, const number n, const ring r); |
---|
22 | typedef poly (*p_Mult_mm_Proc_Ptr)(poly p, const poly m, const ring r); |
---|
23 | typedef poly (*pp_Mult_mm_Proc_Ptr)(poly p, const poly m, |
---|
24 | const ring r, |
---|
25 | poly &last); |
---|
26 | typedef poly (*pp_Mult_mm_Noether_Proc_Ptr)(poly p, const poly m, |
---|
27 | const poly spNoether, int &ll, |
---|
28 | const ring r, poly &last); |
---|
29 | typedef poly (*p_Add_q_Proc_Ptr)(poly p, poly q, int & shorter, const ring r); |
---|
30 | typedef poly (*p_Minus_mm_Mult_qq_Proc_Ptr)(poly p, poly m, poly q, |
---|
31 | int &shorter, const poly spNoether, |
---|
32 | const ring r, poly &last); |
---|
33 | typedef poly (*p_Neg_Proc_Ptr)(poly p, const ring r); |
---|
34 | typedef poly (*pp_Mult_Coeff_mm_DivSelect_Proc_Ptr)(poly p, const poly m, |
---|
35 | int &shorter,const ring r); |
---|
36 | typedef poly (*pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr) |
---|
37 | (poly p,const poly m, const poly a, const poly b, int &shorter,const ring r); |
---|
38 | |
---|
39 | typedef poly (*p_Merge_q_Proc_Ptr)(poly p, poly q, const ring r); |
---|
40 | typedef void (*p_kBucketSetLm_Proc_Ptr)(kBucket_pt bucket); |
---|
41 | |
---|
42 | typedef struct p_Procs_s |
---|
43 | { |
---|
44 | p_Copy_Proc_Ptr p_Copy; |
---|
45 | p_Delete_Proc_Ptr p_Delete; |
---|
46 | p_ShallowCopyDelete_Proc_Ptr p_ShallowCopyDelete; |
---|
47 | p_Mult_nn_Proc_Ptr p_Mult_nn; |
---|
48 | pp_Mult_nn_Proc_Ptr pp_Mult_nn; |
---|
49 | pp_Mult_mm_Proc_Ptr pp_Mult_mm; |
---|
50 | pp_Mult_mm_Noether_Proc_Ptr pp_Mult_mm_Noether; |
---|
51 | p_Mult_mm_Proc_Ptr p_Mult_mm; |
---|
52 | p_Add_q_Proc_Ptr p_Add_q; |
---|
53 | p_Minus_mm_Mult_qq_Proc_Ptr p_Minus_mm_Mult_qq; |
---|
54 | p_Neg_Proc_Ptr p_Neg; |
---|
55 | pp_Mult_Coeff_mm_DivSelect_Proc_Ptr pp_Mult_Coeff_mm_DivSelect; |
---|
56 | pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr pp_Mult_Coeff_mm_DivSelectMult; |
---|
57 | p_Merge_q_Proc_Ptr p_Merge_q; |
---|
58 | p_kBucketSetLm_Proc_Ptr p_kBucketSetLm; |
---|
59 | } pProcs_s; |
---|
60 | |
---|
61 | |
---|
62 | void p_ProcsSet(ring r, p_Procs_s* p_Procs); |
---|
63 | #ifdef RDEBUG |
---|
64 | void p_Debug_GetSpecNames(const ring r, const char* &field, const char* &length, |
---|
65 | const char* &ord); |
---|
66 | void p_Debug_GetProcNames(const ring r, p_Procs_s* p_Procs); |
---|
67 | #endif |
---|
68 | // if set, then dynamic p_procs are used, otherwise static |
---|
69 | extern BOOLEAN p_procs_dynamic; |
---|
70 | |
---|
71 | #endif /* ! P_PROCS_H */ |
---|