1 | /**************************************** |
---|
2 | * Computer Algebra System SINGULAR * |
---|
3 | ****************************************/ |
---|
4 | /*************************************************************** |
---|
5 | * File: p_Numbers.h |
---|
6 | * Purpose: macros/inline functions for number operations |
---|
7 | * Author: obachman (Olaf Bachmann) |
---|
8 | * Created: 8/00 |
---|
9 | * Version: $Id$ |
---|
10 | *******************************************************************/ |
---|
11 | #ifndef P_NUMBERS_H |
---|
12 | #define P_NUMBERS_H |
---|
13 | |
---|
14 | #include <coeffs/coeffs.h> |
---|
15 | #include <coeffs/numbers.h> |
---|
16 | #include <polys/monomials/ring.h> |
---|
17 | |
---|
18 | static inline number n_Copy_FieldGeneral(number n, const ring r) |
---|
19 | { return r->cf->cfCopy(n,r->cf); } |
---|
20 | |
---|
21 | static inline void n_Delete_FieldGeneral(number* p, const ring r) |
---|
22 | { r->cf->cfDelete(p,r->cf); } |
---|
23 | |
---|
24 | static inline number n_Mult_FieldGeneral(number n1, number n2, const ring r) |
---|
25 | { return r->cf->cfMult(n1, n2, r->cf); } |
---|
26 | |
---|
27 | static inline number n_Add_FieldGeneral(number n1, number n2, const ring r) |
---|
28 | { return r->cf->cfAdd(n1, n2, r->cf); } |
---|
29 | |
---|
30 | static inline BOOLEAN n_IsZero_FieldGeneral(number n, const ring r) |
---|
31 | { return r->cf->cfIsZero(n, r->cf); } |
---|
32 | |
---|
33 | static inline BOOLEAN n_Equal_FieldGeneral(number n1, number n2, const ring r) |
---|
34 | { return r->cf->cfEqual(n1, n2, r->cf); } |
---|
35 | |
---|
36 | static inline number n_Neg_FieldGeneral(number n, const ring r) |
---|
37 | { return r->cf->cfNeg(n, r->cf); } |
---|
38 | |
---|
39 | static inline number n_Sub_FieldGeneral(number n1, number n2, const ring r) |
---|
40 | { return r->cf->cfSub(n1, n2, r->cf); } |
---|
41 | |
---|
42 | static inline void n_InpMult_FieldGeneral(number &n1, number n2, const ring r) |
---|
43 | { ndInpMult(n1, n2, r->cf); } |
---|
44 | |
---|
45 | static inline void n_InpAdd_FieldGeneral(number &n1, number n2, const ring r) |
---|
46 | { ndInpAdd(n1, n2, r->cf); } |
---|
47 | |
---|
48 | #ifdef HAVE_RINGS |
---|
49 | #define n_Copy_RingGeneral(n, r) r->cf->cfCopy(n,r->cf) |
---|
50 | #define n_Delete_RingGeneral(n, r) r->cf->cfDelete(n,r->cf) |
---|
51 | #define n_Mult_RingGeneral(n1, n2, r) r->cf->nMult(n1, n2, r->cf) |
---|
52 | #define n_Add_RingGeneral(n1, n2, r) r->cf->nAdd(n1, n2, r->cf) |
---|
53 | #define n_IsZero_RingGeneral(n, r) r->cf->nIsZero(n, r->cf) |
---|
54 | #define n_Equal_RingGeneral(n1, n2, r) r->cf->nEqual(n1, n2, r->cf) |
---|
55 | #define n_Neg_RingGeneral(n, r) r->cf->nNeg(n, r->cf) |
---|
56 | #define n_Sub_RingGeneral(n1, n2, r) r->cf->nSub(n1, n2, r->cf) |
---|
57 | //#define n_InpMult_RingGeneral(n1, n2, r) r->cf->nInpMult(n1, n2, r->cf) |
---|
58 | #define n_InpMult_RingGeneral(n1, n2, r) ndInpMult(n1, n2, r->cf) |
---|
59 | #define n_InpAdd_RingGeneral(n1, n2, r) n1=ndInpAdd(n1, n2, r->cf) |
---|
60 | #endif |
---|
61 | |
---|
62 | #include <coeffs/modulop.h> |
---|
63 | #define n_Copy_FieldZp(n, r) n |
---|
64 | #define n_Delete_FieldZp(n, r) ((void)0) |
---|
65 | #define n_Mult_FieldZp(n1, n2, r) npMultM(n1,n2, r->cf) |
---|
66 | #define n_Add_FieldZp(n1, n2, r) npAddM(n1, n2, r->cf) |
---|
67 | #define n_IsZero_FieldZp(n, r) npIsZeroM(n, r->cf) |
---|
68 | #define n_Equal_FieldZp(n1, n2, r) npEqualM(n1, n2, r->cf) |
---|
69 | #define n_Neg_FieldZp(n, r) npNegM(n, r->cf) |
---|
70 | #define n_Sub_FieldZp(n1, n2, r) npSubM(n1, n2, r->cf) |
---|
71 | #define n_InpMult_FieldZp(n1, n2, r) n1=npMultM(n1, n2, r->cf) |
---|
72 | |
---|
73 | static inline void n_InpAdd_FieldZp(number &n1, number n2, const ring r) |
---|
74 | { n1=npAddM(n1, n2, r->cf); } |
---|
75 | |
---|
76 | #define DO_LINLINE |
---|
77 | #include "coeffs/longrat.cc" |
---|
78 | #define n_Copy_FieldQ(n, r) nlCopy(n, r->cf) |
---|
79 | #define n_Delete_FieldQ(n, r) nlDelete(n,r->cf) |
---|
80 | #define n_Mult_FieldQ(n1, n2, r) nlMult(n1,n2, r->cf) |
---|
81 | #define n_Add_FieldQ(n1, n2, r) nlAdd(n1, n2, r->cf) |
---|
82 | #define n_IsZero_FieldQ(n, r) nlIsZero(n, r->cf) |
---|
83 | #define n_Equal_FieldQ(n1, n2, r) nlEqual(n1, n2, r->cf) |
---|
84 | #define n_Neg_FieldQ(n, r) nlNeg(n, r->cf) |
---|
85 | #define n_Sub_FieldQ(n1, n2, r) nlSub(n1, n2, r->cf) |
---|
86 | #define n_InpMult_FieldQ(n1, n2, r) nlInpMult(n1, n2, r->cf) |
---|
87 | #define n_InpAdd_FieldQ(n1, n2, r) n1=nlInpAdd(n1, n2, r->cf) |
---|
88 | #endif |
---|