source: git/libpolys/polys/templates/p_Numbers.h @ d663f2

spielwiese
Last change on this file since d663f2 was d663f2, checked in by Oleksandr Motsak <motsak@…>, 13 years ago
FIX: fixing longrat-related bugs (due to the Uglyness in p_Numbers.h!)
  • Property mode set to 100644
File size: 3.8 KB
Line 
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
18static inline number n_Copy_FieldGeneral(number n,    const ring r)
19{ return r->cf->cfCopy(n,r->cf); }
20
21static inline void   n_Delete_FieldGeneral(number* p, const ring r)
22{ r->cf->cfDelete(p,r->cf); }
23
24static inline number n_Mult_FieldGeneral(number n1, number n2, const ring r)
25{ return r->cf->cfMult(n1, n2, r->cf); }
26
27static inline number n_Add_FieldGeneral(number n1, number n2, const ring r)
28{ return r->cf->cfAdd(n1, n2, r->cf); }
29
30static inline BOOLEAN n_IsZero_FieldGeneral(number n, const ring r)
31{ return r->cf->cfIsZero(n, r->cf); }
32
33static inline BOOLEAN n_Equal_FieldGeneral(number n1, number n2, const ring r)
34{ return r->cf->cfEqual(n1, n2, r->cf); }
35
36static inline number n_Neg_FieldGeneral(number n,     const ring r)
37{ return r->cf->cfNeg(n, r->cf); }
38
39static inline number n_Sub_FieldGeneral(number n1, number n2, const ring r)
40{ return r->cf->cfSub(n1, n2, r->cf); }
41
42static inline void n_InpMult_FieldGeneral(number &n1, number n2, const ring r)
43{ ndInpMult(n1, n2, r->cf); }
44
45static 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->cfMult(n1, n2, r->cf)
52#define n_Add_RingGeneral(n1, n2, r)       r->cf->cfAdd(n1, n2, r->cf)
53#define n_IsZero_RingGeneral(n, r)         r->cf->cfIsZero(n, r->cf)
54#define n_Equal_RingGeneral(n1, n2, r)     r->cf->cfEqual(n1, n2, r->cf)
55#define n_Neg_RingGeneral(n, r)            r->cf->cfNeg(n, r->cf)
56#define n_Sub_RingGeneral(n1, n2, r)       r->cf->cfSub(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)
59static inline void n_InpAdd_RingGeneral(number &n1, number n2, const ring r)
60{ assume(rField_is_Ring(r)); ndInpAdd(n1, n2, r->cf); }
61#endif
62
63#include <coeffs/modulop.h>
64#define n_Copy_FieldZp(n, r)        n
65#define n_Delete_FieldZp(n, r)      ((void)0)
66#define n_Mult_FieldZp(n1, n2, r)   npMultM(n1,n2, r->cf)
67#define n_Add_FieldZp(n1, n2, r)    npAddM(n1, n2, r->cf)
68#define n_IsZero_FieldZp(n, r)      npIsZeroM(n, r->cf)
69#define n_Equal_FieldZp(n1, n2, r)  npEqualM(n1, n2, r->cf)
70#define n_Neg_FieldZp(n, r)         npNegM(n, r->cf)
71#define n_Sub_FieldZp(n1, n2, r)    npSubM(n1, n2, r->cf)
72#define n_InpMult_FieldZp(n1, n2, r) n1=npMultM(n1, n2, r->cf)
73
74static inline void n_InpAdd_FieldZp(number &n1, number n2, const ring r)
75{ assume(rField_is_Zp(r)); n1=npAddM(n1, n2, r->cf); }
76
77#define DO_LINLINE
78#include <coeffs/longrat.cc> // TODO: fix this Uglyness?!!!
79
80#define n_Copy_FieldQ(n, r)        nlCopy(n, r->cf)
81#define n_Delete_FieldQ(n, r)      nlDelete(n,r->cf)
82#define n_Mult_FieldQ(n1, n2, r)   nlMult(n1,n2, r->cf)
83#define n_Add_FieldQ(n1, n2, r)    nlAdd(n1, n2, r->cf)
84#define n_IsZero_FieldQ(n, r)      nlIsZero(n, r->cf)
85#define n_Equal_FieldQ(n1, n2, r)  nlEqual(n1, n2, r->cf)
86#define n_Neg_FieldQ(n, r)         nlNeg(n, r->cf)
87#define n_Sub_FieldQ(n1, n2, r)    nlSub(n1, n2, r->cf)
88#define n_InpMult_FieldQ(n1, n2, r) nlInpMult(n1, n2, r->cf)
89
90static inline void n_InpAdd_FieldQ(number &n1, number n2, const ring r)
91{ assume(rField_is_Q(r)); nlInpAdd(n1, n2, r->cf); }
92#endif
Note: See TracBrowser for help on using the repository browser.